为了账号安全,请及时绑定邮箱和手机立即绑定

如何最好地从 AWS CDK 检索 AWS SSM 参数?

如何最好地从 AWS CDK 检索 AWS SSM 参数?

Go
神不在的星期二 2022-10-24 16:52:51
抱歉,如果这是重复的,我会对试图找到解决方案的博客和文章感到有点茫然。我正在尝试使用 AWS CDK 来部署堆栈 - 特别是在 S3 存储桶上分层的 CloudFront 分布。我想从证书管理器中检索证书,并且我还想更新 R53 中的托管区域。我想将区域 ID 和证书 ARN 放在 SSM 参数存储中,并让我的 CDK 应用程序从那里提取正确的 ID/ARN,以免将其留在我的代码中。我目前在我的 Go 代码中提取这样的值:certArn := awsssm.StringParameter_ValueFromLookup(stack, certArnSSM)certificate := awscertificatemanager.Certificate_FromCertificateArn(stack, wrapName("certificate"), certArn)certArnSSM参数的路径在哪里。但是,当我运行时,synth我得到了这个:panic: "ARNs must start with \"arn:\" and have at least 6 components: dummy-value-for-/dev/placeholder/certificateArn"从一些阅读来看,这是意料之中的。但是,我不确定解决它的“最佳实践”方法。我不完全清楚如何使用Lazy来解决这个问题 - 我需要创建一个type并实现该Produce()方法吗?
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

我无法复制您的错误。以下合成和部署没有错误,正确检索certArn参数ssm作为有效的证书 arn 查找输入:


func NewCertLookupStack(scope constructs.Construct, id string, props *awscdk.StackProps) awscdk.Stack {

    stack := awscdk.NewStack(scope, &id, &props)


    certArn := awsssm.StringParameter_ValueFromLookup(stack, jsii.String("/dummy/certarn"))

    certificate := awscertificatemanager.Certificate_FromCertificateArn(stack, jsii.String("Certificate"), certArn)


    awscdk.NewCfnOutput(stack, jsii.String("ArnOutput"), &awscdk.CfnOutputProps{

        Value: certificate.CertificateArn(), // demonstrate it works: the correct cert arn storeed as a stack output

    })


    return stack

}


查看完整回答
反对 回复 2022-10-24
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

我通过在我的代码中将证书的 UUID 设置为变量,然后手动构建 ARN 来解决这个问题。不过,这感觉像是解决问题的错误方法。

createdArn := jsii.String(fmt.Sprintf("arn:aws:acm:us-east-1:%s:certificate/%s", *sprops.Env.Account, certUuid))
certificate := awscertificatemanager.Certificate_FromCertificateArn(stack, wrapName("certificate"), createdArn)



查看完整回答
反对 回复 2022-10-24
  • 2 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信