LambdaでDropbox APIを実行する

Dropbox APIをLambdaで実行したときの個人メモ

# 準備
# Dropbox API
- Dropboxのアカウントがあることが前提

- Dropboxのホーム画面から「App Center」を選択

![000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/f21d77c9-680c-fdf5-9d3a-9ccee0904cb5.jpeg)

- 「アプリの開発」を選択

![001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/e22fc298-80c0-f2a8-bb4b-b78d698c96f3.jpeg)

- 「アプリを作成」を押下

![002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/81fd5d68-34d2-df2e-e093-b052b621d55f.jpeg)

- 以下設定にて「Create app」を押下

![004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/2effe1ef-7b4b-085b-0d50-4d1dc3dc77e0.jpeg)

- アプリを作成したことを確認

![005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/934d98f1-cbbb-c39d-dc0c-4cc790f2343b.jpeg)

# Lambda
- AWSマネジメントコンソールからLambdaを選択、「関数の作成」を押下

![006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/82f16909-c44f-ddec-ab98-212451511da8.jpeg)

- カスタムランライムとしてAmazon Linux 1を選択、「関数の作成」を押下

![007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/b2f09eea-b044-def4-994c-dd6d24fcebed.jpeg)

- 生成された「hello.sh」を一部変更して「Deploy」を押下

```hello.sh
function handler () {
    EVENT_DATA=$1

    DATE=`date`
    RESPONSE="{\"statusCode\": 200, \"body\": \"$DATE\"}"
    echo $RESPONSE
    
}
```

![008.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/87b77d7c-4d13-6ad0-c7c8-279df505fe4b.jpeg)

- テスト実行前に、テストイベントを作成  
  インプットを利用していないため、空でも動作に影響なし

![009.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/e4029627-301c-34d8-38af-064aeefd10e4.jpeg)

- 「Test」を押下し、実行

![010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/3f169e2a-57b9-8c82-c998-7c1c7d233418.jpeg)

- echoした内容がレスポンスに出力されていることを確認

![011.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/4697993d-4e45-a459-9b46-d0737cdd1c63.jpeg)

- 「hello.sh」を一部変更して「Deploy」を押下、「Test」を押下し、実行  
    - curlコマンドを利用してHTTPリクエストを送信、レスポンスをechoするように変更  
    - 今回は[httpbin.org](http://httpbin.org/#/HTTP_Methods/get_get)を利用

```hello.sh
function handler () {
    EVENT_DATA=$1

    HTTP=`curl -X GET "http://httpbin.org/get"`
    RESPONSE="{\"statusCode\": 200, \"body\": \"$HTTP\"}"
    echo $RESPONSE
    
}
```

![012.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/72c12915-efc0-b5ad-5bec-cee4e503aac8.jpeg)

- HTTP通信できていることを確認

![013.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/faa5ed0e-562c-f11b-f01c-8e73e89b9ab5.jpeg)

# Dropbox API実行
## APIの権限を確認（今回は[/get_current_account](https://www.dropbox.com/developers/documentation/http/documentation#users-get_current_account)を実行）
- 利用するAPIに必要な権限が「account_info.read」であることを確認

![020.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/296f5e8e-a930-9e1e-b129-742b36e87758.jpeg)

- アプリ情報から許可されている権限を確認

![018.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/1590685a-b98b-61c8-b6cf-32e77be90717.jpeg)

- 「account_info.read」にチェックが入っていることを確認

![023.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/b6c5f08f-51e4-9877-2b0c-ce2c698735e0.jpeg)

- EXAMPLEからcurlコマンドをコピーしLambdaにペースト、「Test」を押下し、実行

![020.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/45444199-bb18-51b7-f712-f2af065cdbba.jpeg)
![021.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/4de22f4a-b116-e66f-ebbd-d778e3b8ba0d.jpeg)

- レスポンスにアカウント情報が含まれていることを確認

![022.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/8ad41cbd-09b1-c8ea-4498-abe4ac32a492.jpeg)

# 感想
- curlをたたきたいだけなら、LambdaでPythonと思っていたが  
  カスタムランライムを使うと楽そう
- Dropbox APIの権限まわり含めて理解していきたい