Articles of amazon web services

桶之间的AWS CLI put-lifecycle-configuration

我有一个桶,我手动创build一个对象生命周期策略; 现在我想把这个政策应用到其他的桶里。 我运行以下命令来获取现有策略: aws s3api get-bucket-lifecycle –bucket mybucket > s3_lifecyclepolicy.json 其中生成这个文件: { "Rules": [ { "Expiration": { "Days": 7 }, "ID": "7 Day Expire", "Status": "Enabled", "NoncurrentVersionExpiration": { "NoncurrentDays": 14 } } ] } 然后我尝试运行应用这样的政策: aws s3api put-bucket-lifecycle-configuration –bucket anotherbucket –lifecycle-configuration file://s3_lifecyclepolicy.json 但是得到这个错误: A client error (MalformedXML) occurred when calling the PutBucketLifecycleConfiguration operation: The XML […]

按名称访问同一个VPC中的其他实例?

我创build了几个centos实例,似乎所有的都有一个内部的dnslogging: ip-{IP}.eu-central-1.compute.internal 不过,我需要更多有用的名字,特别是因为IP正在改变。 我已经通过ec2控制台和运行hostnamectl set-hostname {HOST} –static给出了这些实例名称,但即使如此,这些名称也不会在内部DNS服务上注册。 我希望这些主机名自动注册,因为这些内部IP正在改变。 我怎样才能使它工作?

ELB健康检查仅针对HTTPS失败

我目前在我的Ubuntu单实例上运行ELB(应用程序types),它被设置为侦听HTTP和HTTPS。 HTTP目标组运行状况检查没问题,但HTTPS目标组运行状况检查不是。 不幸的是,工具提示没有提供太多的帮助,只是给我回复了“健康检查失败”的消息。 所以当我尝试通过HTTPS协议上的域访问我的网站时,它返回了一个502错误的网关错误。 但是,访问HTTP协议的网站工作正常。 目前,该域名正指向我的ELB。 到目前为止,我已经尝试了以下,但还没有解决这个问题。 1)我确保了ELB的安全组,并且我的Ubuntu实例接受来自HTTP和HTTPS的入站stream量以及所有可用端口的出站stream量。 2)我已经向ELB HTTPS侦听器添加了ACM证书,并将其转发给位于HTTPS协议上的目标组。 3)在apache2 conf文件中添加了一个虚拟主机443条目,类似于端口80。 有没有办法让我debugging为什么HTTPS目标组运行状况检查失败? 或者我在这里错过了一些东西。

将面向公众的应用程序负载平衡器连接到专用负载平衡器

我正在使用AWS,并尝试将一个巨大的应用程序重新映射到小部分 – 总之:我将单核应用程序转换为基于微服务的应用程序。 所以我想使用一个面向公众的负载均衡器,我可以将一些path路由到其他环境。 例如: domain.com/service1到Elastic Beanstalk中的另一个负载平衡应用程序 domain.com/service2到Elastic Beanstalk中不同的负载均衡应用程序。 我能够将应用程序负载均衡器连接到另一个EC2实例。 但是我试图没有成功将它连接到由Elastic Beanstalk创build的另一个负载均衡器。 有没有人有如何做到这一点的想法?

在CloudFormation模板中的EC2实例交叉引用

我在这里吃了一点。 我有一个特定的应用程序(我无法修改),我需要使用CloudFormation自动在3个AWS EC2实例上部署这些应用程序,并且我需要其中的3个在引导时相互了解,或者至less在任何stream量击中他们。 简而言之,需要发生的事情是,随着机器的启动, 每个机器都需要运行一个本地命令(一个Windows Shell脚本),其中包含所有 3台机器的主机名或IP。 想象一下: c:\>node startReplication.js server1.aws.com,server2.aws.com,server3.aws.com 更难的是我不能使用静态IP或名称,我需要这是完全dynamic的每个堆栈。 我也不能使用任何非AWS本地工具,如厨师或Terraform或任何其他第三方,因为在这里指定不相干的原因。 一切都必须通过本地AWS服务完成。 我试过做这样的事情: "UserData" : { "Fn::Base64" : { "Fn::Join" : [ ",", [ { "Fn::GetAtt" : [ "server1", "PublicDnsName" ] }, { "Fn::GetAtt" : [ "server2", "PublicDnsName" ] }, { "Fn::GetAtt" : [ "server3", "PublicDnsName" ] } ] } } 为了只传递dns的名字,甚至还没有到达如何实际运行脚本/命令的地步 – […]

允许属于具有IAM策略的组的用户承担angular色

我正在尝试为AWS IAMangular色设置策略,以将angular色限制为特定的组,但是我无法从Googlesearch和AWS文档中find如何执行此操作(或者无法执行此操作)。 我正在创build一个angular色(称为ops ),这个angular色将被人类用来在AWS基础架构上执行操作。 我们的要求是多因素能够达到这个angular色(甚至从CLI或API)。 我的进一步要求是允许只承担属于特定组(称为运营商 )的用户angular色。 我目前开发的ops的政策是这个(帐号被replace): { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }, "Principal": { "AWS": "arn:aws:iam::xxxxxxxxxxxx:root" } } ] } 我怎样才能添加进一步的条件来限制这个angular色只有运营商 ? 这甚至有可能吗? 谢谢!

AWS CloudFormation – 从Init调用CLI无法获得凭据

我正在使用CloudFormation模板来启动一个自定义的Windows AMI,它需要从S3存储桶中检索一些代码,并在启动后执行它。 在使用AWS CLI( s3 sync )快速手动完成之后,我一直努力通过CloudFormation将其工作8个小时以上,但都无济于事。 实质上,这个命令总是失败: “NoCredentialsError:找不到凭据” 最初我尝试以许多不同的方式设置/.aws/credentials和/.aws/config文件,直到我终于意识到运行cfn-init.exe的用户身份及其subprocess无法访问这些文件所有这一切都行不通。 所以相反,我select使用setx设置环境variables,但这似乎并不工作,我仍然得到相同的错误。 我对此感到非常沮丧,因为每个testing都需要对CF模板进行更改,上传到S3,创build一个堆栈,等待5-10分钟,完成只引导到RDP, 然后再次find失败。 这是我的模板的init > config部分: "commands" : { "0-Tester" : { "command" : "echo \"I am OK.\" > \"d:\\test.txt\"" }, "1-SetAK" : { "command" : { "Fn::Join" : ["", [ "setx AWS_ACCESS_KEY_ID ", { "Ref": "AutomationUserAK" } ]] } }, "2-SetSK" : { "command" […]

Codedeploy代理“包含在请求中的安全令牌无效”

今天,我们的CodeDeploy设置开始失败,其中一个实例出现以下错误: 整体部署失败,因为太多个别实例部署失败,可用于部署的健康实例太less,或部署组中的某些实例遇到问题。 (错误代码:HEALTH_CONSTRAINTS) 在两台服务器上检查/var/log/aws/codedeploy-agent/codedeploy-agent.log时,其中一个出现以下错误: 2017-07-13 15:45:57 INFO [codedeploy-agent(10192)]: [Aws::CodeDeployCommand::Client 400 0.013838 0 retries] poll_host_command(host_identifier:"arn:aws:ec2:us-west-2:088736878764:instance/xxxx") Aws::CodeDeployCommand::Errors::UnrecognizedClientException The security token included in the request is invalid. 2017-07-13 15:45:57 ERROR [codedeploy-agent(10192)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::UnrecognizedClientException – The security token included in the request is invalid. 如何解决这个问题呢? 我不知道该从哪开始。 此服务器上唯一的更改是在codedeployagent.yml中设置:max_revisions: 2 ,重新启动codedeploy-agent,然后删除(由于磁盘空间限制)/ opt / codedeploy-agent / deployment-root /中的旧修订文件夹date为2016年。 我记得从一个活动的修订版文件夹(具有长哈希ID名称的文件夹)中手动删除修订版(以d-xxx开头的修订版)会给CodeDeploy带来很大的问题,唯一的解决scheme是重新创build部署应用程序。 […]

将多个VPC连接到一个VPN连接

我build立了一个连接到VPC和内部networking的VPN连接,现在我要有多个VPC连接到该VPN(内部networking)。 每个VPC都不能使用一个VPN。 所以我必须将多个VPC连接到一个VPN。 正如我search“过境VPC”( https://aws.amazon.com/blogs/aws/aws-solution-transit-vpc/ )是这种情况下的一个解决scheme。 我想知道这是否是最好的方法,如果有其他解决scheme? 有没有人有与“运输VPC”的经验,可以给我一些提示? 我将不胜感激您的帮助。

在AWS ELBs之前使用HAProxy的好处

我一直在阅读各种大型网站的架构栈,并遇到imgur的。 他们似乎拥有所有的子域名(api.imgur.com,cdn.imgur.com,imgur.com …)都指向一个HAProxy实例,然后将stream量划分为合适的ELB和相关实例。 这是他们的系统图: 更多信息在这里。 为什么不直接让DNS将每个子域直接parsing到相应的ELB IP? HAProxy有什么好处? 还是只是遗留系统的遗留物?