LoginSignup
0
0

【AWS Lambda関数作成】IAMでの権限設定

Last updated at Posted at 2023-12-17

はじめに

【AWS Lambda関数作成】IAMでの権限設定に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

🦁結論🦁

IAMを使って適切な権限を利用する。
今回、必要な権限は下記の6つになります。

  1. AmazonAPIGatewayAdministrator:「 APIGatewayへのフルアクセス」
  2. AWSLambda_FullAccess:「 Lambdaへのフルアクセス」
  3. AWSLambdaBasicExecutionRole:「 Lambda関数が cloudWatchへのログを書き込める」
  4. lambdaInvokeFunction Policy:「作成した Lambda関数を呼び出せる」(Step functionsからの Lambdaアクセス権限)※自身でポリシーを作成
  5. StartExecution Policy:「Step functionsのステートマシンから Lambda関数を実行を開始する」(発火API)※自身でポリシーを作成
  6. DescribeExecution Policy:「Step functionsのステートマシンから Lambda関数の実行に関する情報を取得できる」(状態維持API)※自身でポリシーを作成

これの権限を付与することで Lambda関数を適切に動かせられる。

手順

  1. ポリシーを作成。
  2. ロールを作成する。

押さえておくべき点

  • Step functionsのポリシーは自身でポリシーを作成する必要がある。
  • “Effect”に”Allow”または”Deny”を指定できる。Allow”は指定されたアクションを実行する権限を与え、“Deny”はそれを禁止することを意味する。

利用シーン

  • AWSを利用するにあたって様々な用途に応じて権限を付与する。

注意点

  • 「Step functionsのステートマシンから Lambda関数の実行に関する情報を取得することを許可」(状態維持API)の"Resource”でのArnの入力の際には「:*」を入れる必要がある。

前提🙊

AWSのアカウント作成が終わってる。
AWS Lambdaの環境構築が終わってる。
AWS Lambdaのコードがテスト含め完了してる。


手順詳細

設定などをjson型式で入力などすることで許可の範囲を決定する。

ポリシー許可作成

AWSのメイン画面で「IAM」を検索。

左側からポリシーを選択。


スクリーンショット 2023-12-17 17.51.24.png

サービスを選択をして「Step functions」と入力して「Step functions」を選択。


スクリーンショット 2023-12-17 17.55.03.png

ポリシーエディタの下にあるビジュアルを「json」に変更して1から順番に3回繰り返し作成する。


スクリーンショット 2023-12-17 17.57.24.png


1.「Step functionsのステートマシンから Lambda関数を実行を開始することを許可」(発火API)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "states:StartExecution",
            "Resource": "<StepFunctionsのArnを記述>"
        }
    ]
}

2.「Step functionsのステートマシンから Lambda関数の実行に関する情報を取得することを許可」(状態維持API)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "states:DescribeExecution",
            "Resource": "<StepFunctionsのArnを記述>:*"
        }
    ]
}

※「:*」これがあることでこのステートマシンのすべての実行に対するアクションが許可される。


3. Step functionsから Lambda関数へのアクセス許可

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": “<関数の ARNを記述>”
        }
    ]
}

ロールを作成するを選択。

左側から「ロール」をクリックして「ロールを作成する」をクリック。

スクリーンショット 2023-12-17 17.32.38.png

「AWSサービス」を選択。

スクリーンショット 2023-12-17 17.34.43.png

ユースケースの部分で「Lambda」を選択して「次へ」をクリック。

スクリーンショット 2023-12-17 17.35.38.png

許可ポリシーを6つを検索してチェックをして「次へ」をクリック。

スクリーンショット 2023-12-17 17.36.57.png

  1. AmazonAPIGatewayAdministrator
  2. AWSLambda_FullAccess
  3. AWSLambdaBasicExecutionRole
  4. lambdaInvokeFunction
  5. StartExecution
  6. DescribeExecution

※4〜6は「絞り込みタイプ」を「カスタマー管理」を選択すると簡単に絞り込める。

ロール名を入力(今回は「roletest」とします)

スクリーンショット 2023-12-17 17.41.24.png

左側の「ロール」をクリックして先ほど作成したロール(myrole)をクリック。

スクリーンショット 2023-12-17 17.45.06.png

信頼関係をクリックして「信頼ポリシー」を編集をクリック。

スクリーンショット 2023-12-17 17.46.59.png

下記のコードを貼り付ける

スクリーンショット 2023-12-17 17.48.13.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "lambda.amazonaws.com",
                    "apigateway.amazonaws.com",
                    "states.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

コード解説

“Principal"

許可してるものを示してる。

"lambda.amazonaws.com"

AWS Lambda サービス(Lambda invoke)を使用してLambda 関数を呼び出すこと許可

"apigateway.amazonaws.com"

API Gateway からのリクエストや操作を許可

"states.amazonaws.com"

Step Functions のステートマシンの操作を許可


「ポリシーを更新」をクリック。

作成完了。


参考にしたサイト📗

API ゲートウェイを使用してStep Functions API


AWS Lambda関数作成 セクション リンク

  1. AWSアカウントの作成
  2. AWSの開発環境の構築
  3. Lambda関数の開発とデバッグ
  4. IAMロールの作成と設定(途中まで作成したら、Step Functionsを設定する必要あり)
  5. AWS Step Functionsの設定とデバッグ(完了後、IAMの権限にStep Functionsを追加)
  6. API Gateway(発火API)の設定とデバッグ
  7. API Gateway(状態維持API)の設定とデバッグ
  8. Python(local環境)の開発とデバック
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0