ヘッダー画像

【AWS】CloudFormationでIAMロールを作成する方法

投稿 2025年9月20日 最終更新 2025年9月20日 専門用語多め

前置き

Lambdaなどを作る際に、指定しなければ自動でIAMロール・ポリシーが作成され、
そういう積み重ねで気づかぬうちに増えていくIAM…。

どのIAMが必要でどのIAMが不要なのか、わからなくなってしまうことはあるあるだと思います。

そこで該当サービスとIAMロールをCloudFormationで作成して、該当サービスとIAMが紐づいて管理されるので、管理しやすくなります。

今回はIAMロールを作成するところだけをピックアップして紹介します。

CloudFormation実行用のIAMロール作成

IAM検索AWSの画面上部にある検索画面に「iam」と入力します。

IAM検索結果入力して出てきた「IAM」をクリックします。

IAMメニューアクセス管理のロールをクリックします。

ロール作成ロールを作成をクリックします。

信頼されたエンティティを選択

信頼されたエンティティタイプ

信頼されたエンティティタイプAWSのサービスを選択します。

ユースケース

ユースケースサービスまたはユースケースはCloudFormationを選択します。

許可を追加

許可ポリシー

のちに追加するので、特に何もせず次へをクリックします。

名前、確認、および作成

ロールの詳細

ロール名ロール名を入力し、ロールを作成をクリックします。

ロールを表示ロールを表示をクリックします。

ポリシーインラインポリシーを作成をクリックします。

アクセス許可を指定

ポリシーエディタJSONに切り替えて、下記JSONを張り付けて次へをクリック。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:UpdateAssumeRolePolicy",
                "iam:PassRole",
                "iam:DetachRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:TagRole",
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:AttachRolePolicy",
                "iam:UpdateRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "*"
        }
    ]
}

確認して作成

ポリシーの詳細

ポリシー名ポリシー名を入力して、ポリシーの作成をクリックします。

CloudFormationの作成

スタックの作成

検索AWSの画面上部にある検索画面に「cloudformation」と入力します。

検索結果入力して出てきた「CloudFormation」をクリックします。

スタックの作成スタックの作成をクリックします。

前提条件 - テンプレートの準備

テンプレートの準備既存のテンプレートを選択 を選択します。

テンプレートの指定

テンプレートソーステンプレートファイルのアップロードを選択し、ファイルの選択で下記yamlのようなファイルをアップロードし、次へをクリックします。

例ではLambdaに必要なマネージドポリシーと、適当な独自ポリシーを設定してみます。
※ここはお好みでポリシーを変更下さい

AWSTemplateFormatVersion: "2010-09-09"
Description: Create IAM Roles Sample
Resources:
  # IAMロール
  SampleRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: sample-lambda-role
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action:
              - sts:AssumeRole
      # IAMマネージドポリシー
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
        - arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole
      # 独自IAMポリシー
      Policies:
        - PolicyName: sample-lambda-policy
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action:
                  - lambda:InvokeFunction
                Resource:
                  - "arn:aws:lambda:ap-northeast-1:123456789012:function:sample-lambda1"
                  - "arn:aws:lambda:ap-northeast-1:123456789012:function:sample-lambda2"
              - Effect: Allow
                Action:
                  - secretsmanager:GetSecretValue
                Resource:
                  - "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:sample-secret-123456"
                  - "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:sample-secret-000000"

スタックの詳細を指定

スタック名を提供

スタック名スタック名を入力し、次へをクリックします。

スタックオプションの設定

IAMロール指定さきほど作成したIAMロールを指定します。

承認チェックして次へをクリックします。

確認して作成

内容を確認して、送信をクリックします。

スタック作成完了少し待つと、CREATE_COMPLETEと表示されます。

ここまでくればIAMが作成されました。

もし失敗すると、この画面でエラーを表示してくれます。

作成されたIAMロール

作成されたIAMロールこれがCloudFormationで作成されたIAMロールになります。

注意点

CloudFormationを動かすためのIAMロールを作成しました。

つまり自身の権限とは別に、CloudFormationにIAMの操作ができる権限を付与するため、思わぬ事故には十分気を付けてください。

自分自身にIAMを操作する権限がなくとも、CloudFormationを通して作れてしまうので、取扱注意です。

まとめ

CloudFormationを使ってIAMを作成してみました。

インフラ構成をコード化できる(IaC)ので、最初のyaml(コード)を書くのは時間かかりますが、書けさえすれば管理も楽ですし横展開も楽、引継ぎや自動化にも強くていいとこ尽くしです。

以上、ここまで見ていただきありがとうございます。

皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。

コメント

この記事のコメントはありません。

TOP