https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-permissions-work-in-aws-lambda-dr/E_AWS-permissions_1200x600.png

AWS Lambdaにおけるパーミッションの仕組み

最終更新日 May 18, 2021

所要時間:1 分

AWS Lambdaで作業するとき、多くのユーザーは他のAWSサービスを使用するパーミッションに苦労する。具体的には、S3、RDS、Transcribeなどのサービスにアクセスする方法だ。

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.

多くの場合 IAMユーザーを作成し AWS_ACCESS_KEY_IDそして AWS_SECRET_ACCESS_KEY環境変数.AWS SDK は、これらのキーまたは値を AWS 認証情報ファイル.(詳細は ドキュメントを参照してください)。しかし、Lambdaにこれらの認証情報を追加するのは間違いです。

身分違い

以下の .envファイルを実行すると、アプリケーションが Lambda 内から AWS サービスにアクセスできなくなります。接続の失敗は、IAMユーザーをどのように設定したかに関係なく発生します。

AWS_ACCESS_KEY_ID={{YOUR-ACCESS-KEY-HERE}} AWS_SECRET_ACCESS_KEY={{YOUR-SECRET-HERE}}

Lambda関数がデプロイされると、上記の環境変数がLambdaによって生成される。つまり .envの値は期待通りに設定されないということだ。

Serverlessを使ったデプロイの詳細については、以下をご覧ください。 BrefとServerless Frameworkを使ったPHPでのAWS Lambdaまたは AWS Lambda によるサーバーレス Python.

パーミッションの設定

環境変数 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを設定することで、デプロイ時にロールのパーミッションも設定する必要がある。すべてのAWSサービスも、IAMユーザーの代わりにLambda関数で直接処理される。

以下は、Serverlessフレームワークを使用してAWS Lambda関数をデプロイするyamlの一部の例である。

provider:
    name: aws
    region: us-east-1
    runtime: provided
    iamRoleStatements:
        - Effect: Allow
          Action:
              - s3:PutObject
              - s3:GetObject
              - s3:DeleteObject
          Resource: 'arn:aws:s3:::bucket-name/*'
        - Effect: Allow
          Action: transcribe:*
          Resource: '*'

上の例の iamRoleStatementsブロックに注目してほしい。この中でラムダは s3:PutObject, s3:GetObjects3:DeleteObjectリソース bucket-nameへのアクセス権が付与されます。また、この関数は transcribe:*サービスにもアクセスできます。

上記の例は、以下の例でIAMパーミッションがどのように設定されるかに非常に似ている:

aws_iam_s3_policyAWS IAM S3 Policy Example

amazon_iam_transcribe_policyAWS IAM Transcribe Policy Example

パーミッションの検討

AWS Lambdaへのデプロイに成功すると、AWS Consoleで関数のアクティブな権限を確認できます。これを行うには、ファンクションコンソールの Permissions タブに移動します。

lambda_function_permissionsAWS Lambda Function Permissions

そこから各サービスのアクセス許可をクリックすると、設定方法の詳細が表示される。

次のページ

様々なAWSサービスに対する可能なパーミッションについてのドキュメントは AWS Identity and Access Management ドキュメント.また、これらのパーミッションを実際に使用する例については、今後の投稿をお楽しみに。

シェア:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam Culpヴォネージの卒業生

アダムは開発者兼コンサルタントで、ウルトラランニング、ブログ、そして指導と支援への飽くなき欲求を持ちながら、他の人々が素晴らしいことを成し遂げるためにテクノロジーを手なずけるのを助けることを楽しんでいる。