

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

# AWS Lambda 搭配 使用 AWS Infrastructure Composer
<a name="services-appcomposer"></a>

AWS Infrastructure Composer 是一種視覺化建置器，用於卸載現代應用程式 AWS。您可以透過在視覺化畫布 AWS 服務 中拖曳、分組和連線來設計應用程式架構。Infrastructure Composer 會從您的設計建立基礎設施即程式碼 (IaC) 範本，您可以使用 [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) 或 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 部署。

## 將 Lambda 函數匯出至 Infrastructure Composer
<a name="services-appcomposer-export"></a>

您可以使用 Lambda 主控台根據現有 Lambda 函數的組態建立新專案，開始使用 Infrastructure Composer。若要將函數的組態和程式碼匯出至 Infrastructure Composer 以建立新專案，請執行下列動作：

1. 開啟 Lambda 主控台中的[函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選取您希望使用做為 Infrastructure Composer 專案基礎的函數。

1. 在**函數概觀**窗格中，選擇**匯出至 Infrastructure Composer**。

   若要將函數的組態和程式碼匯出至 Infrastructure Composer，Lambda 會在您的帳戶中建立 Amazon S3 儲存貯體來暫時存放此資料。

1. 在對話方塊中，選擇**確認並建立專案**以接受此儲存貯體的預設名稱，並將函數的設定和程式碼匯出至 Infrastructure Composer。

1. (選擇性) 若要為 Lambda 建立的 Amazon S3 儲存貯體選擇其他名稱，請輸入新名稱，然後選擇**確認並建立專案**。Amazon S3 儲存貯體的名稱必須是全域唯一的，並遵循[儲存貯體命名規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。

1. 若要在 Infrastructure Composer 中儲存專案和函數檔案，請啟用[本機同步模式](https://docs.aws.amazon.com/application-composer/latest/dg/reference-features-local-sync.html)。

**注意**  
如果您之前已使用**匯出至應用程式編寫器**功能，並使用預設名稱建立 Amazon S3 儲存貯體，則 Lambda 可以重複使用此儲存貯體 (如果儲存貯體仍然存在)。接受對話方塊中的預設儲存貯體名稱，以重新使用現有儲存貯體。

### Amazon S3 傳輸儲存貯體組態
<a name="services-appcomposer-bucket-info"></a>

Lambda 建立用來傳輸函數組態的 Amazon S3 儲存貯體，會使用 AES 256 加密標準的自動加密物件。Lambda 也會將儲存貯體設定為使用[儲存貯體擁有者條件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html)，以確保只有您的 AWS 帳戶 能夠將物件新增至儲存貯體。

Lambda 會將儲存貯體設定為在上傳物件 10 天後自動刪除物件。但是，Lambda 不會自動刪除儲存貯體本身。若要從 中刪除儲存貯體 AWS 帳戶，請遵循[刪除儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)體中的指示。預設儲存貯體名稱使用字首 `lambdasam`、10 位數英數字串，以及 AWS 區域 您在其中建立函數的 ：

```
lambdasam-06f22da95b-us-east-1
```

為避免將額外費用新增至您的 AWS 帳戶，我們建議您在完成將函數匯出至 Infrastructure Composer 後，立即刪除 Amazon S3 儲存貯體。

適用標準 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

### 所需的許可
<a name="services-appcomposer-permissions"></a>

若要使用 Lambda 與 Infrastructure Composer 功能的整合，您需要特定許可才能下載 AWS SAM 範本，並將函數的組態寫入 Amazon S3。

若要下載 AWS SAM 範本，您必須具有使用下列 API 動作的許可：
+ [GetPolicy](https://docs.aws.amazon.com/lambda/latest/api/API_GetPolicy.html)
+ [iam:GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html)
+ [iam:GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
+ [iam:GetRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRolePolicy.html)
+ [iam:ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)
+ [iam:ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)
+ [iam:ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

您可以將 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html) AWS 受管政策新增至 IAM 使用者角色，以授予使用所有這些動作的許可。

若要讓 Lambda 將函數的組態寫入 Amazon S3，您必須擁有使用下列 API 動作的許可：
+ [S3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [S3:CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [S3:PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [S3:PutBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)

如果您無法將函數組態匯出至 Infrastructure Composer，請檢查您的帳戶是否具有執行這些操作所需要的許可。如果您擁有所需要的許可，但仍然無法匯出函數組態，請檢查任何可能會限制 Amazon S3 存取的[資源型政策](access-control-resource-based.md)。

## 其他資源
<a name="w2aad101c33b7"></a>

如需取得如何根據現有 Lambda 函數在 Infrastructure Composer 中設計無伺服器應用程式的詳細教學課程，請參閱[將 Lambda 搭配基礎設施即程式碼 (IaC)](foundation-iac.md)。

若要使用 Infrastructure Composer 和使用 Lambda AWS SAM 設計和部署完整的無伺服器應用程式，您也可以遵循[AWS 無伺服器模式研討會](https://catalog.workshops.aws/serverless-patterns/en-US)中的[AWS Infrastructure Composer 教學](https://catalog.workshops.aws/serverless-patterns/en-US/dive-deeper/module1a)課程。