AWS API GatewayからLambdaを通さずにS3へ連携する方法

AWS API GatewayからLambdaを通さずにS3へ連携する方法

S3プロキシを使用してAPI GatewayからS3へ直接連携する手順です。Lambdaは使用しません。

GETメソッド

IAMロール作成

S3にフルアクセスできるIAMロールを作成しておきます。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

信頼関係を以下の通りに編集します。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

ロールARNは後で使用するので、コピーしておきます。

S3にファイルを置く

次にS3にファイルを置きます。api-to-s3というバケットにsample.txtというファイルを置いています。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

API Gatewayの設定

API Gatewayでリソースを追加します。この際、リソースパスはパスパラメータ形式にします。{xxx}みたいな書き方です。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

S3からファイルを取得して表示するのでGETメソッドを追加します。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

「統合リクエスト」をクリックします。

統合タイプは「AWSサービス」にします。

AWSリージョン、AWSサービスを各々指定して、AWSサブドメインは空白にします。

HTTPメソッドはGETで、パス上書きは{bucketname}/{objectkey}とします。

実行ロールには、先ほど作成したIAMロールを設定します。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

URLパスパラメータに以下を追加します。

名前 マッピング元
bucketname method.request.path.bucketname
objectkey method.request.path.objectkey

AWS API GatewayからLambdaを通さずにS3へ連携する方法

これでテストします。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

正常にファイルが取得出来て出力されていることが確認できます。

ちなみにデプロイしてURL実行してもOKです。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

チュートリアル: API Gateway で Amazon S3 プロキシとして REST API を作成する

PUTメソッド

次にAPI Gateway経由でPUTしてbody部をファイルとしてS3へ作成します。

IAMはGETと同じロールを使用します。バケットも同じものを使用します。

S3へファイルを作成するのでPUTメソッドを追加します。

「統合リクエスト」をクリックします。

統合タイプは「AWSサービス」にします。

AWSリージョン、AWSサービスを各々指定して、AWSサブドメインは空白にします。

HTTPメソッドはPUTで、パス上書きは{bucketname}/{objectkey}とします。

実行ロールには、先ほど作成したIAMロールを設定します。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

URLパスパラメータに以下を追加します。

名前 マッピング元
bucketname method.request.path.bucketname
objectkey method.request.path.objectkey

AWS API GatewayからLambdaを通さずにS3へ連携する方法

これでテストします。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

正常にファイルが作成されていることが確認できます。

AWS API GatewayからLambdaを通さずにS3へ連携する方法

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA