

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

# GitHub ジョブで AWS Secrets Manager シークレットを使用する
<a name="retrieving-secrets_github"></a>

GitHub ジョブでシークレットを使用するには、GitHub アクションを使用して からシークレットを取得し AWS Secrets Manager 、GitHub ワークフローでマスクされた[環境変数](https://docs.github.com/en/actions/learn-github-actions/environment-variables)として追加できます。GitHub アクションの詳細については、GitHub ドキュメントの「[Understanding GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions)」(GitHub アクションについて) を参照してください。

GitHub 環境にシークレットを追加すると、GitHub ジョブの他のすべてのステップでもそのシークレットが使用できるようになります。環境内のシークレットが悪用されるのを防ぐには、「[Security hardening for GitHub Actions](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions)」(GitHub アクションのセキュリティ強化) のガイダンスに従ってください。

シークレット値の文字列全体を環境変数値として設定できます。また、文字列が JSON の場合は、JSON を解析して JSON キーと値のペアごとに環境変数を設定することもできます。シークレット値がバイナリの場合は文字列に変換されます。

シークレットから作成された環境変数を表示するには、デバッグログを有効にします。詳細については、*GitHub Docs* の「[デバッグログの有効化](https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging)」を参照してください。

シークレットから作成された環境変数を使用するには、GitHub Docs の「[環境変数](https://docs.github.com/en/actions/learn-github-actions/environment-variables)」を参照してください。

## 前提条件
<a name="retrieving-secrets_github_prereq"></a>

このアクションを使用するには、まず AWS 認証情報を設定し、 `configure-aws-credentials` ステップを使用して GitHub AWS リージョン 環境で を設定する必要があります。**GitHub OIDC プロバイダを使用して直接ロールを引き受ける**には、「[GitHub アクションの  AWS 認証情報アクションの設定](https://github.com/aws-actions/configure-aws-credentials)」の指示に従ってください。これにより、有効期間の短い認証情報を使用でき、追加のアクセスキーを Secrets Manager の外部に保存する必要がなくなります。

アクションが引き受ける IAM ロールには、以下のアクセス許可が必要です。
+ 取得するシークレットに対する `GetSecretValue`
+ すべてのシークレットに対する `ListSecrets`
+ (オプション) シークレットが で暗号化 KMS key されている場合は、 `Decrypt`の カスタマー管理キー。

詳細については、「[の認証とアクセスコントロール AWS Secrets Manager](auth-and-access.md)」を参照してください。

## 使用方法
<a name="retrieving-secrets_github_usage"></a>

アクションを使用するには、次の構文を使用するステップをワークフローに追加します。

```
- name: Step name
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: |
      secretId1
      ENV_VAR_NAME, secretId2
    name-transformation: (Optional) uppercase|lowercase|none
    parse-json-secrets: (Optional) true|false
```パラメータ

`secret-ids`  
シークレット ARN、名前、名前プレフィックス。  
環境変数名を設定するには、まず環境変数名を入力し、その後にシークレット ID とカンマを順に入力します。例えば、`ENV_VAR_1, secretId` はシークレット `secretId` から **ENV\$1VAR\$11** という名前の環境変数を作成します。環境変数名には、大文字の英字、数字、およびアンダースコアを使用できます。  
プレフィックスを使用するには、3 文字以上を入力し、その後にアスタリスクを付けます。例えば、`dev*` は名前が **dev** で始まるすべてのシークレットに一致します。取得できる一致シークレットの最大数は 100 です。変数名を設定し、プレフィックスが複数のシークレットと一致する場合、アクションは失敗します。

`name-transformation`  
デフォルトでは、このステップはシークレット名から各環境変数名を作成し、大文字の英字、数字、アンダースコアのみが含まれるように変換し、数字で始まらないようにします。名前の文字には、`lowercase` で小文字を使用するか、`none` で大文字と小文字を変更しないようにステップを設定できます。デフォルト値は `uppercase` です。

`parse-json-secrets`  
(オプション) デフォルトでは、環境変数値がシークレット値内の JSON 文字列全体に設定されます。`parse-json-secrets` を `true` に設定すると、JSON 内のキーと値のペアごとに環境変数が作成されます。  
「name」や「Name」など JSON で使用されるキーが大文字と小文字を区別する場合、アクション名が重複して競合することに注意してください。この場合は、`parse-json-secrets` を `false` に設定し、JSON シークレット値を別途解析します。

## 環境変数の命名
<a name="retrieving-secrets_github_alias"></a>

アクションによって作成された環境変数の名前は、その変数の元となるシークレットと同じになります。環境変数にはシークレットよりも厳しい命名要件があるため、そうした要件を満たすようにシークレット名が変換されます。例えば、小文字は大文字に変換されます。シークレットの JSON を解析する場合、環境変数名にはシークレット名と JSON キー名の両方が含まれます。(例えば `MYSECRET_KEYNAME`)。小文字を変換しないようにアクションを設定できます。

2 つの環境変数が同じ名前で終わると、アクションは失敗します。そのため、環境変数に使用する名前を*エイリアス*として指定する必要があります。

名前が競合する可能性がある場合:
+ 例えば、「MySecret」という名前のシークレットと「mysecret」という名前のシークレットはどちらも「MYSECRET」という名前の環境変数になります。
+ 「Secret\$1keyname」という名前のシークレットと、「keyname」という名前のキーを持つ「Secret」という名前の JSON 解析されたシークレットは、どちらも「SECRET\$1KEYNAME」という名前の環境変数になります。

次の例に示すように、`ENV_VAR_NAME` という名前の変数を作成する*エイリアス*を指定することで、環境変数名を設定できます。

```
secret-ids: |
  ENV_VAR_NAME, secretId2
```

**空のエイリアス**
+ `parse-json-secrets: true` を設定して、空のエイリアスを入力し、次にカンマ、シークレット ID の順に入力すると、アクションは環境変数に解析された JSON キーと同じ名前を付けます。変数名にはシークレット名は含まれません。

  シークレットに有効な JSON が含まれていない場合、アクションは 1 つの環境変数を作成し、シークレット名と同じ名前を付けます。
+ `parse-json-secrets: false` を設定して、空のエイリアスを入力し、次にカンマとシークレット ID の順に入力すると、アクションは環境変数にエイリアスを指定しなかった場合と同じように名前を付けます。

次の例は、空のエイリアスを示しています。

```
,secret2
```

## 例
<a name="retrieving-secrets_github_examples"></a>

**Example 1 名前と ARN でシークレットを取得する**  
次の例では、名前と ARN で識別されるシークレットの環境変数を作成しています。  

```
- name: Get secrets by name and by ARN
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: |
      exampleSecretName
      arn:aws:secretsmanager:us-east-2:123456789012:secret:test1-a1b2c3
      0/test/secret
      /prod/example/secret
      SECRET_ALIAS_1,test/secret
      SECRET_ALIAS_2,arn:aws:secretsmanager:us-east-2:123456789012:secret:test2-a1b2c3
      ,secret2
```
作成された環境変数  

```
EXAMPLESECRETNAME: secretValue1
TEST1: secretValue2
_0_TEST_SECRET: secretValue3
_PROD_EXAMPLE_SECRET: secretValue4
SECRET_ALIAS_1: secretValue5
SECRET_ALIAS_2: secretValue6
SECRET2: secretValue7
```

**Example 2 プレフィックスで始まるシークレットをすべて取得する**  
次の例では、名前が *beta* で始まるすべてのシークレットの環境変数を作成しています。  

```
- name: Get Secret Names by Prefix
  uses: 2
  with:
    secret-ids: |
      beta*    # Retrieves all secrets that start with 'beta'
```
作成された環境変数  

```
BETASECRETNAME: secretValue1
BETATEST: secretValue2
BETA_NEWSECRET: secretValue3
```

**Example 3 シークレット内の JSON を解析する**  
次の例では、シークレット内の JSON を解析して環境変数を作成しています。  

```
- name: Get Secrets by Name and by ARN
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: |
      test/secret
      ,secret2
    parse-json-secrets: true
```
シークレット `test/secret` には、次のシークレット値があります。  

```
{
  "api_user": "user",
  "api_key": "key",
  "config": {
    "active": "true"
  }
}
```
シークレット `secret2` には、次のシークレット値があります。  

```
{
  "myusername": "alejandro_rosalez",
  "mypassword": "EXAMPLE_PASSWORD"
}
```
作成された環境変数  

```
TEST_SECRET_API_USER: "user"
TEST_SECRET_API_KEY: "key"
TEST_SECRET_CONFIG_ACTIVE: "true"
MYUSERNAME: "alejandro_rosalez"
MYPASSWORD: "EXAMPLE_PASSWORD"
```

**Example 4 環境変数名に小文字を使用する**  
次の例では、小文字の名前で環境変数を作成します。  

```
- name: Get secrets
  uses: aws-actions/aws-secretsmanager-get-secrets@v2
  with:
    secret-ids: exampleSecretName
    name-transformation: lowercase
```
作成された環境変数:  

```
examplesecretname: secretValue
```