问题描述: 在 AWS CDK 中使用 SSM 参数时,会出现参数在账户中不可用的问题。
解决方法:
确保 SSM 参数已经在 AWS 账户中存在,并且已经正确创建。可以通过 AWS 管理控制台或者 AWS CLI 进行创建。
确保 AWS CDK 项目中已经正确引入了 aws-cdk-lib
和 aws-cdk-lib/aws-ssm
模块。
import * as ssm from 'aws-cdk-lib/aws-ssm';
ssm.StringParameter.valueForStringParameter
方法获取 SSM 参数的值,并将其传递给需要使用参数值的组件。import * as ssm from 'aws-cdk-lib/aws-ssm';
export class MyStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// 获取 SSM 参数的值
const myParameterValue = ssm.StringParameter.valueForStringParameter(this, 'MyParameterName');
// 使用参数值
const myResource = new MyResource(this, 'MyResource', {
parameterValue: myParameterValue,
});
}
}
AmazonSSMReadOnlyAccess
或者自定义的具有 SSM 参数访问权限的策略。Resources:
MyCdkRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: cdk.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: SsmParameterAccess
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- ssm:GetParameters
- ssm:GetParameter
Resource: '*'
注意:在生产环境中,应该限制 SSM 参数的访问权限,只授权给需要使用参数的角色或者用户。