Amazon API Gateway から S3 バケットのオブジェクトを取得する際に、path parameter(パスパラメータ)を使用して取得する方法を教えてください

2023.03.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Amazon API Gateway から S3 バケットのオブジェクトを取得する際に、path parameter(パスパラメータ)を使用しての取得方法が分からないため、AWS 公式ドキュメントで公開されている取得手順などがあれば教えてください。

どう対応すればいいの?

path parameterを使用した Amazon API Gateway から S3 バケットのオブジェクトを取得する方法について AWS 公式ドキュメントにチュートリアルがありますので、基本的にこちらの手順に倣ってお試しください。

なお、以下のチュートリアルをお試しいただく上では、事前に取得先の S3 バケットやオブジェクトの準備ならびに、API Gateway から S3 バケットのオブジェクトを取得するための IAM ロール設定等を行う必要があります。

やってみた

実際にpath parameterを使用して、Amazon API Gateway から S3 バケットのオブジェクトを取得可能か検証してみました。

なお、下記より記載の検証内容では事前に取得先の S3 バケットやフォルダ、オブジェクトならびに、API Gateway から S3 バケットのオブジェクトを取得するための IAM ロールの権限設定等を実施済みの上で行っています。

Create Resource

path parameterで指定するためのリソースを本検証では以下のとおり 3 つ作成しています。 なお、以下を設定すると最終的なResource Pathとして、/{test-bucketname}/{test-folder}/{test-object} になります。

  • Resource Name: test-bucketname
  • Resource Path: {test-bucketname}

  • Resource Name: test-folder
  • Resource Path: {test-folder}

  • Resource Name: test-object
  • Resource Path: {test-object}

Method Request

本検証では、以下のとおり設定しています。

設定項目 設定内容
Integration type AWS Service
AWS Region ap-northeast-1
AWS Service Simple Storage Service (S3)
HTTP method GET
Action Type Use path override
Path override (optional) {test-bucketname}/{test-folder}/{test-object}
Execution role <API Gateway から S3 バケットのオブジェクトを取得するための IAM ロールの arn を入力してください>

Integration Request

本検証では、以下のとおりURL Path Parametersを設定しています。

Name Mapped from
test-bucketname method.request.path.test-bucketname
test-folder method.request.path.test-folder
test-object method.request.path.test-object

TEST

本検証では、以下の S3 バケットやフォルダ、オブジェクトを事前に用意しています。

なお、オブジェクト「test-object-apigateway-s3.txt」の中身は "Test success!!" の文字列のみが記載されています。

Resource Value
S3 バケット test-bucket-apigateway-s3
フォルダ test-folder-apigateway-s3
オブジェクト test-object-apigateway-s3.txt

TEST のリンクをクリックして、Path に上記で設定した各項目を入力します。

Path Parameter Value
{test-bucketname} test-bucket-apigateway-s3
{test-folder} test-folder-apigateway-s3
{test-object} test-object-apigateway-s3.txt

入力完了後、[Test]ボタンをクリックすると、右半分の画面にリクエスト結果が表示されます。

path parameterを使用して、Amazon API Gateway から S3 バケットのオブジェクトを取得することができ、リクエスト結果より、Status:200{test-object} で指定したファイルの中身が表示されていることを確認できました。

まとめ

Amazon API Gateway から S3 バケットのオブジェクトを取得する際に、path parameterを使用して取得する方法については、冒頭でご案内した公式ドキュメントのチュートリアルや本稿の上記検証内容を参考にしていただき、少しでも誰かのお役にたてば幸いです。

参考資料