如何解决Cloudformation中如何将Resource ID导入UserData
我有一个带有 efs 文件系统和实例启动配置的 cloudformation 模板。我需要在 UserData 脚本中引用 efs 文件系统 ID,因为我想在启动时挂载 efs。我已经像这样用 echo ${!Ref EFSFileSystem}
试过了:
EFSFileSystem:
Type: AWS::EFS::FileSystem
Properties:
...
InstanceLc:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
...
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
aws s3 cp s3://aws-cloudinit/install.sh - | bash
echo ${!Ref EFSFileSystem}
/var/lib/cloud/instance/scripts/part-001: line 4: ${Ref EFSFileSystem}: bad substitution
我找到了一些示例(例如 https://github.com/awslabs/aws-cloudformation-templates/blob/master/community/services/EFS/efs_with_automount_to_ec2.json),但我无法将它们应用于我的 UserData 构造。
在 UserData 中导入 efs 文件系统 ID 的正确语法是什么?
解决方法
您已经在字符串上有一个 !Sub
,因此您只需要执行 ${!Ref EFSFileSystem}
而不是 ${EFSFileSystem}
。这将替换为资源的默认输出,在本例中为 Id
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。