CloudFormationを使ってIAMロールを作成する方法

# CloudFromationとは
CloudFormationはプログラミング言語やYAML,JSONを使用してAWSリソースを構築出来るサービスです。
AWS環境をテンプレート化しておくことで、同じ環境を作成する時間を削減することができます。

今回はYAMLで作成していきますので、JSONに変換したい方は次の記事をご参照下さい。
<a href="https://qiita.com/kazunobu2211/items/49deda949e97ea86bbf4" rel="nofollow noopener" target="_blank">YAMLからJSONに変換する方法</a>

## 構成
![スクリーンショット 2022-11-26 10.21.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/f129accb-1004-5d0f-1450-0ef75783d445.png)


## 完成したテンプレート
```:テンプレート
AWSTemplateFormatVersion: 2010-09-09

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      -
        Label:
          default: IamRole
        Parameters:
          - RoleName1
          - PrincipalService
          - ManagedPolicyOne

Parameters:
  RoleName1:
      Type: String
      Default: 'RoleName1'

  PrincipalService:
    Type: String
    Default: 'ecs.amazonaws.com'

  ManagedPolicyOne:
    Type: String
    Default: 'arn:aws:iam::aws:policy/AdministratorAccess'

Resources:
  RootRole1:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName : !Ref RoleName1
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - !Ref PrincipalService
            Action:
              - 'sts:AssumeRole'
      Path: /
      ManagedPolicyArns:
        - !Ref ManagedPolicyOne
```
## 構築手順
### １ スタックの新規作成 
AWS CloudFormation管理コンソールから、スタックの作成をクリックし、[新しいリソースを使用(標準)]を選択。
![スクリーンショット 2022-11-22 20.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/47bb1ae7-a91c-5f62-c620-850cc285d438.png)


### ２ テンプレートアップロード 
[スタックの作成]で、[テンプレートの準備完了]を選択し、[テンプレートファイルのアップロード]>
[ファイルの選択]で、テンプレートを選択。
![スクリーンショット 2022-11-22 20.45.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/6334bb44-c5c2-617e-656d-a71daadb9056.png)

### ３ パラメータ入力 
各パラメータを入力します。`スタックの名前は任意の名前を入れる`
![スクリーンショット 2022-11-26 10.23.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/1aff98a8-bef7-55d4-aec1-47a8fddfcb7b.png)

#### パラメータの詳細
|パラメータ名|用途|備考|
|-|-|-|
|RoleName1|IAMロールの名前|例:RoleForEcs|
|PrincipalService|IAMロールを使用するサービス|例:ecs.amazonaws.com|
|ManagedPolicyOne|マネージドのIAMポリシーのARN|例:arn:aws:iam::aws:policy/AdministratorAccess<br>[IAMポリシーのARNを特定する方法](https://qiita.com/kazunobu2211/items/4db90a4e0519bfca5af1)|

### 4 CloudFormation詳細設定 
次へを選択。`CloudFormationの詳しい設定について次の記事をご覧下さい。`
<a href="https://qiita.com/kazunobu2211/items/3fd42d5482a3331332d0#cloudformation%E6%96%B0%E8%A6%8F%E4%BD%9C%E6%88%90%E6%89%8B%E9%A0%86" target="_blank rel="nofollow noopener"">CloudFormationの詳しい設定について</a>

### 5 最終確認
最終確認を行い`送信`を選択
![スクリーンショット 2022-11-22 22.02.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/8ce53f29-daec-d456-5905-fb39a0001fda.png)

### 6 正常終了確認 
ステータスがCREATE_COMPLETEになったらスタック正常終了です。
![スクリーンショット 2022-11-26 10.32.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/dd61219e-6c23-d7e7-5b71-7f2886888f89.png)

## 公式ドキュメント
<a href="https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html" target="_blank rel="nofollow noopener"">CloudFormation IAMロールのAWS公式ドキュメント</a>