

• 2026 年 4 月 30 日之後， AWS Systems Manager CloudWatch Dashboard 將不再可用。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS 秘密和組態提供者程式碼範例
<a name="ascp-examples"></a>

## ASCP 身分驗證與存取控制範例
<a name="ascp-auth-access-examples"></a>

### 範例：允許 Amazon EKS Pod 身分識別服務 (pods.eks.amazonaws.com) 擔任角色與標記工作階段的 IAM 政策：
<a name="ascp-auth-access-example-1"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

------

## SecretProviderClass
<a name="ascp-examples-secretproviderclass"></a>

您可以使用 YAML 來描述要使用 ASCP 在 Amazon EKS 中掛載的參數。如需範例，請參閱 [SecretProviderClass 用量](#ascp-scenarios-secretproviderclass)。

### SecretProviderClass YAML 結構
<a name="ascp-examples-secretproviderclass-1"></a>

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
   name: name
spec:
  provider: aws
  parameters:
    region:
    failoverRegion:
    pathTranslation:
    usePodIdentity:
    preferredAddressType:
    objects:
```

參數欄位包含掛載請求的詳細資訊：

**region**  
（選用） 參數 AWS 區域 的 。如果不使用此欄位，ASCP 會從節點上的註釋尋找區域。此查閱會增加掛載請求的額外負荷，因此建議您為使用大量 Pod 的叢集提供區域。  
如果您也指定 `failoverRegion`，則 ASCP 會嘗試從這兩個區域中擷取參數。如果任一區域傳回 `4xx` 錯誤 (例如身分驗證問題)，則 ASCP 不會掛載任一參數。如果已成功從 `region``` 擷取參數，則 ASCP 會掛載該參數值。如果未成功從 `region` 擷取參數，但已成功從 `failoverRegion` 擷取參數，則 ASCP 會掛載該參數值。

**`failoverRegion`**  
(選用) 如果您包含此欄位，則 ASCP 會嘗試從 `region` 中定義的區域和此欄位擷取參數。如果任一區域傳回 `4xx` 錯誤 (例如身分驗證問題)，則 ASCP 不會掛載任一參數。如果已成功從 `region` 擷取參數，則 ASCP 會掛載該參數值。如果未成功從 `region` 擷取參數，但已成功從 `failoverRegion` 擷取參數，則 ASCP 會掛載該參數值。如需如何使用此欄位的範例，請參閱 [多區域參數容錯移轉](#multi-region-failover)。

**pathTranslation**  
(選用) 如果 Amazon EKS 中的檔案名稱將包含路徑分隔符號字元，例如 Linux 上的斜線 (/)，則要使用的單一替代字元。ASCP 無法建立包含路徑分隔符號字元的掛載檔案。相反地，ASCP 會將路徑分隔符號字元取代為其他字元。如果不使用此欄位，則取代字元為底線 (\$1)，例如 `My/Path/Parameter` 掛載為 `My_Path_Parameter`。  
若要避免發生字元取代的情況，請輸入字串 `False`。

***usePodIdentity***  
(選用) 決定身分驗證方法。未指定時，它預設為服務帳戶 (IRSA) 的 IAM 角色。  
+ 若要使用 EKS Pod 身分識別，請使用下列任何值：`"true"`、`"True"`、`"TRUE"`、`"t"` 或 `"T"`。
+ 若要明確使用 IRSA，請設定下列任何值：`"false"`、`"False"`、`"f"`、`"FALSE"` 或 `"F"`。

***preferredAddressType***  
(選用) 指定 Pod 身分識別代理程式端點通訊的偏好 IP 位址類型。此欄位僅在使用 EKS Pod 身分識別功能時適用，並在使用服務帳戶的 IAM 角色時忽略。值不區分大小寫。有效的值如下：  
+ `"ipv4"`、`"IPv4"` 或 `"IPV4"` – 強制使用 Pod 身分識別代理程式 IPv4 端點
+ `"ipv6"`、`"IPv6"` 或 `"IPV6"` – 強制使用 Pod 身分識別代理程式 IPv6 端點
+ 未指定 – 使用自動端點選擇、先嘗試 IPv4 端點，並在 IPv4 失敗時退回到 IPv6 端點

**objects**  
包含待掛載秘密的 YAML 宣告的字串。建議使用 YAML 多行字串或分隔號 (\$1) 字元。    
**objectName**  
必要. 指定要擷取的參數或秘密的名稱。對於 Parameter Store，這是參數的 [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters)，並且可以是參數的名稱或完整 ARN。對於 Secrets Manager，這是 [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters) 參數，並且可以是秘密的易記名稱或完整 ARN。  
**objectType**  
如果未針對 `objectName` 使用 Secrets Manager ARN，其則為必要欄位。對於 Parameter Store，請使用 `ssmparameter`。對於 Secrets Manager，請使用 `secretsmanager`。  
**objectAlias**  
(選用) Amazon EKS Pod 中秘密的檔案名稱。如果您未指定此欄位，`objectName` 會顯示為檔案名稱。  
**objectVersion**  
(選用) 參數的版本 ID。不建議，因為每次更新參數時都必須更新版本 ID。依預設，會使用最新版本。如果您包含 `failoverRegion`，則此欄位代表主要 `objectVersion`。  
**objectVersionLabel**  
(選用) 版本的別名。預設值為最新版本 `AWSCURRENT`。如果您包含 `failoverRegion`，則此欄位代表主要 `objectVersionLabel`。  
**jmesPath**  
(選用) 要掛載在 Amazon EKS 中之檔案的參數金鑰映射。若要使用此欄位，您的參數值必須是 JSON 格式。  
下列範例會顯示 JSON 編碼參數的樣子。  

```
{
    "username" : "myusername",
    "password" : "mypassword"
}
```
金鑰為 `username` 和 `password`。與 `username` 關聯的值是 `myusername`，與 `password` 關聯的值是 `mypassword`。  
如果使用此欄位，您必須包含 `path` 和 `objectAlias`。    
**路徑**  
參數值 JSON 中鍵值對的索引鍵。如果欄位包含連字號，請使用單引號將其逸出，例如：`path: '"hyphenated-path"'`。  
**objectAlias**  
要掛載在 Amazon EKS Pod 中的檔案名稱。如果欄位包含連字號，請使用單引號將其逸出，例如：`objectAlias: '"hyphenated-alias"'`。  
**`failoverObject`**  
(選用) 如果您指定此欄位，則 ASCP 會嘗試擷取在主要 `objectName` 中指定的參數和在 `failoverObject` `objectName` 子欄位中指定的參數。如果任一項傳回 `4xx` 錯誤 (例如身分驗證問題)，則 ASCP 不會掛載任一參數。如果已成功從主要 `objectName` 擷取參數，則 ASCP 會掛載該參數值。如果未成功從主要 `objectName` 擷取參數，但已成功從容錯移轉 `objectName` 擷取參數，則 ASCP 會掛載該參數值。如果包含此欄位，則您必須包含欄位 `objectAlias`。如需如何使用此欄位的範例，請參閱 [容錯移轉至其他參數](#failover-parameter)。  
當容錯移轉參數不是複本時，您通常會使用此欄位。如需如何指定複本的範例，請參閱 [多區域參數容錯移轉](#multi-region-failover)。    
**objectName**  
容錯移轉參數的名稱或完整 ARN。如果您使用 ARN，則 ARN 中的區域必須與欄位 `failoverRegion` 相符。  
**objectVersion**  
(選用) 參數的版本 ID。必須與主要 `objectVersion` 相符。不建議，因為每次更新參數時都必須更新版本 ID。依預設，會使用最新版本。  
**objectVersionLabel**  
(選用) 版本的別名。預設值為最新版本 `AWSCURRENT`。

### 建立基本 SecretProviderClass 組態，以在 Amazon EKS Pod 中掛載參數。
<a name="create-SecretProviderClass-config"></a>

------
#### [ Pod Identity ]

SecretProviderClass 可在相同的 Amazon EKS 叢集中使用參數：

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameter-store
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "MyParameter"
        objectType: "ssmparameter"
    usePodIdentity: "true"
```

------
#### [ IRSA ]

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: deployment-aws-parameter
spec:
  provider: aws
  parameters:
    objects: |
        - objectName: "MyParameter"
          objectType: "ssmparameter"
```

------

### SecretProviderClass 用量
<a name="ascp-scenarios-secretproviderclass"></a>

使用這些範例來建立不同案例的 `SecretProviderClass` 組態。

#### 範例：按名稱或 ARN 掛載參數
<a name="mount-by-name-arn"></a>

此範例說明如何掛載三種不同類型的參數：
+ 由完整 ARN 指定的參數
+ 由名稱指定的參數
+ 秘密的參數版本

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter2-d4e5f6"
      - objectName: "MyParameter3"
        objectType: "ssmparameter"
      - objectName: "MyParameter4"
        objectType: "ssmparameter"
        objectVersionLabel: "AWSCURRENT"
```

#### 範例：從參數掛載鍵值對
<a name="mount-key-value-pairs"></a>

此範例說明如何從 JSON 格式參數掛載特定的鍵值對：

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter-a1b2c3"
        jmesPath: 
            - path: username
              objectAlias: dbusername
            - path: password
              objectAlias: dbpassword
```

#### 範例：容錯移轉組態範例
<a name="failover-examples"></a>

這些範例顯示如何設定參數的容錯移轉。

##### 多區域參數容錯移轉
<a name="multi-region-failover"></a>

此範例說明如何為跨多個區域複寫的參數設定自動容錯移轉：

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "MyParameter"
```

##### 容錯移轉至其他參數
<a name="failover-parameter"></a>

此範例說明如何將容錯移轉設定為其他參數 (非複本)：

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "arn:aws:ssm:us-east-1:777788889999:parameter:MyParameter-a1b2c3"
        objectAlias: "MyMountedParameter"
        failoverObject: 
          - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyFailoverParameter-d4e5f6"
```

## 其他資源
<a name="additional-resources"></a>

如需有關如何搭配 Amazon EKS 使用 ASCP 的詳細資訊，請參閱下列資源：
+ [搭配 Amazon EKS 使用 Pod 身分識別](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [AWS Secrets 在 GitHub 上存放 CSI 驅動程式](https://github.com/aws/secrets-store-csi-driver-provider-aws)