

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

# 如何搭配 AWS SAM 管道使用 OIDC 身分驗證
<a name="deploying-with-oidc"></a>

AWS Serverless Application Model ()AWS SAM支援 Bitbucket、GitHub Actions 和 GitLab 持續整合和持續交付 (CI/CD) 平台的 OpenID Connect (OIDC) 使用者身分驗證。透過此支援，您可以使用任何這些平台的授權 CI/CD 使用者帳戶來管理您的無伺服器應用程式管道。否則，您將需要建立和管理多個 AWS Identity and Access Management (IAM) 使用者，以控制對 AWS SAM 管道的存取。

## 使用 AWS SAM 管道設定 OIDC
<a name="deploying-with-oidc-setup"></a>

在`sam pipeline bootstrap`組態程序期間，執行下列動作以使用 AWS SAM 管道設定 OIDC。

1. 當系統提示您選擇身分提供者時，請選取 **OIDC**。

1. 接著，選取支援的 OIDC 提供者。

1. 輸入以 開頭的 OIDC 提供者 URL**https://**。
**注意**  
AWS SAM 會在產生`AWS::IAM::OIDCProvider`資源類型時參考此 URL。

1. 接著，依照提示輸入存取所選平台所需的 CI/CD 平台資訊。這些詳細資訊因平台而異，可能包括：
   + OIDC 用戶端 ID。
   + 程式碼儲存庫名稱或通用唯一識別碼 (UUID)。
   + 與儲存庫相關聯的群組或組織名稱。
   + 程式碼儲存庫所屬的 GitHub 組織。
   + GitHub 儲存庫名稱。
   + 部署將從中發生的分支。

1. AWS SAM 會顯示輸入的 OIDC 組態摘要。輸入要編輯之設定的號碼，或按 Enter 繼續。

1. 當系統提示您確認建立支援輸入的 OIDC 連線所需的資源時，請按 Y 繼續。

AWS SAM 會使用 提供的組態產生 `AWS::IAM::OIDCProvider` AWS CloudFormation 資源，以擔任管道執行角色。若要進一步了解此 CloudFormation 資源類型，請參閱*AWS CloudFormation 《 使用者指南*》中的 [AWS::IAM::OIDCProvider](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-oidcprovider.html)。

**注意**  
如果身分提供者 (IdP) 資源已存在於您的 中 AWS 帳戶， AWS SAM 會參考它，而不是建立新的資源。

## 範例
<a name="deploying-with-oidc-setup-example"></a>

以下是使用 AWS SAM 管道設定 OIDC 的範例。

```
Select a permissions provider:
    1 - IAM (default)
    2 - OpenID Connect (OIDC)
Choice (1, 2): 2
Select an OIDC provider:
    1 - GitHub Actions
    2 - GitLab
    3 - Bitbucket
Choice (1, 2, 3): 1
Enter the URL of the OIDC provider [https://token.actions.githubusercontent.com]:
Enter the OIDC client ID (sometimes called audience) [sts.amazonaws.com]:
Enter the GitHub organization that the code repository belongs to. If there is no organization enter your username instead: my-org
Enter GitHub repository name: testing
Enter the name of the branch that deployments will occur from [main]:

[3] Reference application build resources
Enter the pipeline execution role ARN if you have previously created one, or we will create one for you []:
Enter the CloudFormation execution role ARN if you have previously created one, or we will create one for you []:
Please enter the artifact bucket ARN for your Lambda function. If you do not have a bucket, we will create one for you []:
Does your application contain any IMAGE type Lambda functions? [y/N]:

[4] Summary
Below is the summary of the answers:
    1 - Account: 123456
    2 - Stage configuration name: dev
    3 - Region: us-east-1
    4 - OIDC identity provider URL: https://token.actions.githubusercontent.com
    5 - OIDC client ID: sts.amazonaws.com
    6 - GitHub organization: my-org
    7 - GitHub repository: testing
    8 - Deployment branch: main
    9 - Pipeline execution role: [to be created]
    10 - CloudFormation execution role: [to be created]
    11 - Artifacts bucket: [to be created]
    12 - ECR image repository: [skipped]
Press enter to confirm the values above, or select an item to edit the value:

This will create the following required resources for the 'dev' configuration:
    - IAM OIDC Identity Provider
    - Pipeline execution role
    - CloudFormation execution role
    - Artifact bucket
Should we proceed with the creation? [y/N]:
```

## 進一步了解
<a name="deploying-with-oidc-setup-learn-more"></a>

如需搭配 AWS SAM 管道使用 OIDC 的詳細資訊，請參閱 [sam pipeline bootstrap](sam-cli-command-reference-sam-pipeline-bootstrap.md)。