Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何使用 Secrets Manager 密碼為不受支援的資料庫建立輪換函數?
我想為 AWS Secrets Manager 密碼建立 AWS Lambda 函式。我的資料庫或服務不支援自動輪換功能。
解決方法
先決條件:安裝和設定 AWS Command Line Interface (AWS CLI)。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
為 Lambda 輪換函式建立程式碼
如需指示,請參閱設定非資料庫 AWS Secrets Manager 密碼的自動輪換。
根據一般輪換函式範本建立 AWS CloudFormation 變更集
- 執行 create-cloud-formation-change-set AWS CLI 命令。
- 將 --stack-name 替換為 CloudFormation 堆疊的名稱。
- 將 --parameter-overrides 替換為您 AWS 區域的 Secrets Manager 區域端點,以及範本所建立 Lambda 輪換函式的名稱。
create-cloud-formation-change-set AWS CLI 命令的範例:
aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate --stack-name MyLambdaCreationStack --parameter-overrides Name=endpoint,Value=https://secretsmanager.REGION.amazonaws.com Name=functionName,Value=MySecretsManagerRotationFunction --capabilities CAPABILITY_IAM CAPABILITY_RESOURCE_POLICY
**注意:**請務必完全按照所示使用 arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate 的 ARN。
使用 CloudFormation 變更集來更新堆疊
create-cloud-formation-change-set 命令會傳回 ApplicationId、ChangeSetId、SemanticVersion 和 StackId 值。
請完成下列步驟:
- 執行 execute-change-set 命令時,將 change-set-name 替換為 ChangeSetId 值。
- 執行 execute-change-set AWS CLI 命令:
aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE
CloudFormation 堆疊會建立 Lambda 函式和 AWS Identity and Access Management (IAM) 角色。IAM 角色具有 Lambda 函式所需的權限。
確認建立 Lambda 函式
執行 list-functions AWS CLI 命令:
aws lambda list-functions Output { ... "FunctionName": "MySecretsManagerRotationFunction", ... "FunctionArn": "arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction", ... }
**注意:**FunctionName 值與您在 --parameter-overrides 選項中指定的函數名稱相符。
設定 Lambda 函式對 Amazon Virtual Private Cloud 的存取
如果您的資料庫或服務位於 Amazon Virtual Private Cloud (Amazon VPC) 中,請執行 update-function-configuration 命令,將 Lambda 輪換函式設定為在 Amazon VPC 中執行。請務必提供 VPC 子網路 ID 和安全群組 ID。如需詳細資訊,請參閱授予 Lambda 函式存取 Amazon VPC 中資源的權限。
**注意:**如果您的資料庫或服務不在 Amazon VPC 中,請略過此步驟。
update-function-configuration AWS CLI 命令的範例:
$ aws lambda update-function-configuration --function-name your-lambda-function \ --vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-0aed64f81acc4c037
為 Secrets Manager 建立 Amazon VPC 端點
如果具有資料庫或服務和 Lambda 輪換函式的 Amazon VPC 無法存取網際網路,請建立 Amazon VPC 端點。在您的 Amazon VPC 中設定私有服務端點以存取 Secret Manager,並在 VPC 內的端點開啟輪換函式。執行 create-vpc-endpoint AWS CLI 命令。
**注意:**如果您的資料庫或服務不在 Amazon VPC 中,請略過此步驟。
$ aws ec2 create-vpc-endpoint --vpc-id vpc-0abb11f5a28a8abe7 --vpc-endpoint-type Interface \ --service-name com.amazonaws.your-region.secretsmanager --subnet-ids subnet-076c28105d486f3bd subnet-0af00c796ccdc725f \ --security-group-ids sg-0bacf4bbed67e4df5
設定 Lambda 函式與資料庫或服務之間的網路連線
請確認 Lambda 函式可以透過所需的網路連接埠路由至您的資料庫或服務。連接埠和路由需求會根據資料庫或服務以及其相關 VPC 組態而有所不同。
**注意:**如果您的資料庫或服務不在 Amazon VPC 中,請略過此步驟。
為您的使用案例自訂輪換函式
輪換範本會為您實作 createSecret 和 finishSecret 步驟。您必須修改 Lambda 函式,才能為您的使用案例和資料庫實現 setSecret 和 testSecret 步驟。如需詳細資訊,請參閱輪換函式中的四個步驟。
為您的密碼開啟輪換
使用 --rotation-rules 和 AutomaticallyAfterDays 參數指定輪換之間的天數。
aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7
如需詳細資訊,請參閱輪換 AWS Secrets Manager 密碼。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 1 年前
- 已提問 1 年前