

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# コアデバイスが AWS サービスとやり取りできるように認可する
<a name="device-service-role"></a>

AWS IoT Greengrass コアデバイスは、 AWS IoT Core 認証情報プロバイダーを使用して サービスへの AWS 呼び出しを承認します。 AWS IoT Core 認証情報プロバイダーを使用すると、デバイスは X.509 証明書を一意のデバイス ID として使用して AWS リクエストを認証できます。これにより、 AWS アクセスキー ID とシークレットアクセスキーを AWS IoT Greengrass コアデバイスに保存する必要がなくなります。詳細については、「 *AWS IoT Core デベロッパーガイド*[」の「 AWS サービスへの直接呼び出しの承認](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)」を参照してください。

 AWS IoT Greengrass Core ソフトウェアを実行するときに、コアデバイスが必要とする AWS リソースをプロビジョニングすることを選択できます。これには、コアデバイスが AWS IoT Core 認証情報プロバイダーを通じて引き受ける AWS Identity and Access Management (IAM) ロールが含まれます。`--provision true` 引数を使用して、コアデバイスが一時的な AWS 認証情報を取得できるようにするロールとポリシーを設定します。この引数は、この IAM AWS IoT ロールを指すロールエイリアスも設定します。使用する IAM ロールと AWS IoT ロールエイリアスの名前を指定できます。これらの他の名前パラメータなしで `--provision true` を指定した場合、Greengrass コアデバイスは次のデフォルトリソースを作成して使用します。
+ IAM ロール: `GreengrassV2TokenExchangeRole`

  この役割には、`GreengrassV2TokenExchangeRoleAccess` という名前のポリシーと、`credentials.iot.amazonaws.com` がロールを継承することができる信頼関係があります。ポリシーには、コアデバイスに対する最低限のアクセス許可が含まれます。
**重要**  
このポリシーには、S3 バケット内のファイルへのアクセスは含まれません。コアデバイスが S3 バケットからコンポーネントアーティファクトを取得できるように、ロールにアクセス許可を追加する必要があります。詳細については、「[コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する](#device-service-role-access-s3-bucket)」を参照してください。
+ AWS IoT ロールエイリアス: `GreengrassV2TokenExchangeRoleAlias`

  このロールエイリアスは IAM ロールを参照します。

詳細については、「[ステップ 3: AWS IoT Greengrass Core ソフトウェアをインストールする](install-greengrass-v2.md)」を参照してください。

既存のコアデバイスにロールエイリアスを設定することもできます。設定するには、[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)の `iotRoleAlias` 設定パラメータを設定します。

この IAM ロールの一時的な AWS 認証情報を取得して、カスタムコンポーネントで AWS オペレーションを実行できます。詳細については、「[AWS サービスとやり取り](interact-with-aws-services.md)」を参照してください。

**Topics**
+ [コアデバイスに対するサービスロールのアクセス許可](#device-service-role-permissions)
+ [コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する](#device-service-role-access-s3-bucket)

## コアデバイスに対するサービスロールのアクセス許可
<a name="device-service-role-permissions"></a>

このロールにより、次のサービスがロールを継承できます。
+ `credentials.iot.amazonaws.com`

 AWS IoT Greengrass Core ソフトウェアを使用してこのロールを作成する場合、次のアクセス許可ポリシーを使用して、コアデバイスがログに接続して送信できるようにします AWS。ポリシーの名前は、デフォルトで `Access` で終わる IAM ロールの名前になります。例えば、デフォルトの IAM ロール名を使用した場合には、このポリシーの名前は `GreengrassV2TokenExchangeRoleAccess` になります。

------
#### [ Greengrass nucleus v2.5.0 and later ]

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

------
#### [ v2.4.x ]

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:DescribeCertificate",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

------
#### [ Earlier than v2.4.0 ]

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:DescribeCertificate",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams",
        "iot:Connect",
        "iot:Publish",
        "iot:Subscribe",
        "iot:Receive",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

------

## コンポーネントのアーティファクトの S3 バケットへのアクセスを許可する
<a name="device-service-role-access-s3-bucket"></a>

コアデバイスのロールは、デフォルトではコアデバイスが S3 バケットにアクセスすることを許可しません。S3 バケットにアーティファクトを持つコンポーネントをデプロイするには、コアデバイスがコンポーネントアーティファクトをダウンロードすることを許可する `s3:GetObject` アクセス許可を追加する必要があります。コアデバイスに新しいポリシーを追加することで、このアクセス許可を付与できます。

**Amazon S3 のコンポーネントアーティファクトへのアクセスを許可するポリシーを追加するには**

1. `component-artifact-policy.json` という名前のファイルを作成して、次の JSON をファイルにコピーします。このポリシーは、S3 バケット内のすべてのファイルへのアクセスを許可します。amzn-s3-demo-bucket を S3 バケットの名前に置き換えて、コアデバイスにアクセスを許可します。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
     ]
   }
   ```

------

1. 次のコマンドを実行して、`component-artifact-policy.json` のポリシードキュメントからポリシーを作成します。

------
#### [ Linux or Unix ]

   ```
   aws iam create-policy \
     --policy-name MyGreengrassV2ComponentArtifactPolicy \
     --policy-document file://component-artifact-policy.json
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iam create-policy ^
     --policy-name MyGreengrassV2ComponentArtifactPolicy ^
     --policy-document file://component-artifact-policy.json
   ```

------
#### [ PowerShell ]

   ```
   aws iam create-policy `
     --policy-name MyGreengrassV2ComponentArtifactPolicy `
     --policy-document file://component-artifact-policy.json
   ```

------

   出力のポリシーメタデータから、ポリシーの Amazon リソースネーム (ARN) をコピーします。この ARN を使用して、次の手順で、このポリシーをコアデバイスのロールにアタッチします。

1. 次のコマンドを実行して、ポリシーをコアデバイスのロールにアタッチします。*GreengrassV2TokenExchangeRole* を AWS IoT Greengrass Core ソフトウェアの実行時に指定したロールの名前に置き換えます。その後、ポリシー ARN を、前のステップで書き留めた ARN に置き換えます。

------
#### [ Linux or Unix ]

   ```
   aws iam attach-role-policy \
     --role-name GreengrassV2TokenExchangeRole \
     --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iam attach-role-policy ^
     --role-name GreengrassV2TokenExchangeRole ^
     --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
   ```

------
#### [ PowerShell ]

   ```
   aws iam attach-role-policy `
     --role-name GreengrassV2TokenExchangeRole `
     --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
   ```

------

   コマンドに出力がない場合は成功したことを意味しており、コアデバイスがこの S3 バケットにアップロードしたアーティファクトにアクセスできるようになります。