gpt4 book ai didi

amazon-web-services - 如何在 CloudFormation 模板中将数据从 AWS S3 复制到 EC2?

转载 作者:行者123 更新时间:2023-12-05 01:13:20 25 4
gpt4 key购买 nike

我创建了一个启动 AutoScaling 组的 CloudFormation 模板。在启动过程中,允许 s3:GetObject 访问的策略会附加到每个 EC2 实例。之后,我使用用户数据安装 Apache Web 服务器和 PHP,然后更改相关文件夹的设置。然后,我需要将多个文件从 S3 存储桶(没有公共(public)访问权限)复制到每个实例中的/var/www/html 文件夹,但如果不恢复为手动复制或同步,我无法弄清楚如何执行此操作。 CloudFormation 堆栈完成后使用 CLI 生成文件 - 这必须是一个完全自动化的过程。

模板中的用户数据如下:

"UserData": {
"Fn::Base64": {
"Fn::Join": [
"\n",
[
"#!/bin/bash",
"yum update -y",
"yum install -y httpd24 php56",
"service httpd start",
"chkconfig httpd on",
"groupadd DMO",
"usermod -a -G DMO ec2-user",
"chgrp -R DMO /var/www",
"chmod 2775 /var/www",
"find /var/www -type d -exec chmod 2775 {} +",
"find /var/www -type f -exec chmod 0664 {} +"
]
]
}
}

最佳答案

为了坚持您已经在做的事情,您可以从用户数据脚本中运行 AWS CLI:

"UserData": {
"Fn::Base64": {
"Fn::Join": [
"\n",
[
"#!/bin/bash",
"yum update -y",
"yum install -y httpd24 php56",
"service httpd start",
"chkconfig httpd on",
"groupadd DMO",
"usermod -a -G DMO ec2-user",
"chgrp -R DMO /var/www",
"chmod 2775 /var/www",
"aws s3 cp s3://MYBUCKET/MYFILE.zip /tmp",
"unzip -d /var/www /tmp/MYFILE.zip",
"rm /tmp/MYFILE.zip",
"find /var/www -type d -exec chmod 2775 {} +",
"find /var/www -type f -exec chmod 0664 {} +"
]
]
}
}

为了执行此操作,您的 EC2 实例配置文件必须授予从 S3 读取文件的权限。

另一种方法是使用AWS::CloudFormation::Init :它是一个预定义的元数据 key ,您可以将其附加到 EC2::InstanceAutoScaling::LaunchConfiguration 资源,它允许您配置包、服务和单个文件(包括从 S3 检索和解压缩文件)。

有一个教程 here

关于amazon-web-services - 如何在 CloudFormation 模板中将数据从 AWS S3 复制到 EC2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60552370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com