Amazon web services 使用AWS SDK启动实例和AWS cli管理实例是一种好方法吗?
我刚开始学习AWS,我有一些问题 首先,我遵循了关于如何使用AWS SDK for JAVA启动实例的官方文档,如下所示:Amazon web services 使用AWS SDK启动实例和AWS cli管理实例是一种好方法吗?,amazon-web-services,ssh,amazon-ec2,aws-sdk,aws-cli,Amazon Web Services,Ssh,Amazon Ec2,Aws Sdk,Aws Cli,我刚开始学习AWS,我有一些问题 首先,我遵循了关于如何使用AWS SDK for JAVA启动实例的官方文档,如下所示: AmazonEC2 Client = new AmazonEC2Client(awsCreds); CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); csgr.withGroupName("Azzouz_group").withDescription("My sec
AmazonEC2 Client = new AmazonEC2Client(awsCreds);
CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest();
csgr.withGroupName("Azzouz_group").withDescription("My security group");
IpPermission ipPermission = new IpPermission();
ipPermission.withIpRanges("0.0.0.0/0").withIpProtocol("tcp");
AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest();
authorizeSecurityGroupIngressRequest.withGroupName("Azzouz_group").withIpPermissions(ipPermission);
RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
runInstancesRequest.withImageId("ami-4b814f22")
.withInstanceType("m1.small")
.withMinCount(1)
.withMaxCount(1)
.withKeyName("azzouz_key")
.withSecurityGroups("Azzouz_group");
RunInstancesResult runInstancesResult = Client.runInstances(runInstancesRequest);
RunInstancesResult runInstancesResult = Client.runInstances(runInstancesRequest);
String instanceId = runInstancesResult.getReservation().getInstances().get(0).getInstanceId();
我没有使用CreateKeyPairRequest
部分,因为我想将我的公钥上传到amazon,所以当我尝试ssh
进入时,我不必添加-I path/to/key.pem
,我只需在我的java代码中提到密钥名称(“azzouz_key”
),在接下来的几行中,$USER
包含azzouz\u键
:
keypair=$USER # just a name
publickeyfile=$HOME/.ssh/id_rsa.pub
regions=$(aws ec2 describe-regions \
--output text \
--query 'Regions[*].RegionName')
for region in $regions; do
echo $region
aws ec2 import-key-pair \
--region "$region" \
--key-name "$keypair" \
--public-key-material "file://$publickeyfile"
done
我现在想要的是连接到实例并自动化一些东西。所以我打算从java代码内部调用shell,脚本获取一个实例id作为参数,然后获取ip地址(使用aws ec2 descripe instances
),将ssh插入其中并执行一些操作
我想授权ssh从任何ip连接到实例,只是作为开始(0.0.0.0/0),我不确定这是否是我应该做的
所以,我的问题是:这是最好的方法吗?!我是否应该使用aws cli来创建和管理实例?!仅提及密钥对名称是否符合将公共ssh密钥上载到amazon的机制
拜托,我才刚刚开始,我是一名实习生,我还没有访问亚马逊帐户的权限,所以我可以测试我的工作。我只是在脑子里想这些。多谢各位 我的建议是在AWS上设置一个帐户,并开始使用AWS免费层选项 总之,它是免费的(只需关注您在服务中发布或使用的内容) 除此之外,您的问题是如何通过SSH从任何地方授权连接,这是通过安全组完成的() 关于什么是最好的选择,这真的取决于你 如果您需要在AWS上启动两个实例,那么控制台就足够了。如果您想协调您的混合设置,那么您的方式可能是最好的 CLI也是日常操作的优秀解决方案 简单地说,没有最好的方法,也没有好的或坏的方法。这完全取决于你的需要
我希望这能有所帮助。我的建议是在AWS上设置一个帐户,并开始使用AWS免费层选项 总之,它是免费的(只需关注您在服务中发布或使用的内容) 除此之外,您的问题是如何通过SSH从任何地方授权连接,这是通过安全组完成的() 关于什么是最好的选择,这真的取决于你 如果您需要在AWS上启动两个实例,那么控制台就足够了。如果您想协调您的混合设置,那么您的方式可能是最好的 CLI也是日常操作的优秀解决方案 简单地说,没有最好的方法,也没有好的或坏的方法。这完全取决于你的需要
我希望这能有所帮助。自动化是一个巨大的主题。如果您想使用脚本扩展AWS自动化,在接触API/SDK之前,首先必须设计自己的AWS资源标签 标记命名是引用AWS资源的一种隐式方法,无需明确指定资源id(例如VPC id、EC2 id、接口id等)。此外,对于EC2这样的资源,在创建过程中不允许立即使用标记,您需要研究“客户端令牌”的用法 AWSCLI允许您进行大量的自动化操作,然而,要操作响应结果,您需要shell脚本技能来操作它们。我建议您选择您熟悉的AWS SDK语言
云配置管理工具(Ansible、saltstack、puppet等工具的支持有限)可以是下一步,如果您计划扩展整个源部署、服务器配置 自动化是一个庞大的主题。如果您想使用脚本扩展AWS自动化,在接触API/SDK之前,首先必须设计自己的AWS资源标签 标记命名是引用AWS资源的一种隐式方法,无需明确指定资源id(例如VPC id、EC2 id、接口id等)。此外,对于EC2这样的资源,在创建过程中不允许立即使用标记,您需要研究“客户端令牌”的用法 AWSCLI允许您进行大量的自动化操作,然而,要操作响应结果,您需要shell脚本技能来操作它们。我建议您选择您熟悉的AWS SDK语言
云配置管理工具(Ansible、saltstack、puppet等工具的支持有限)可以是下一步,如果您计划扩展整个源部署、服务器配置 >你可能想考虑以基础结构作为代码开始。使用代码管道的云形成将确保自动化和一致的环境发布,并使您在市场上具有极高的价值
两者都可以通过awscli启动和管理。随着您的IaC能力和复杂性的增加,与CloudFormation相比,Terraform的模块化可能值得研究 >你可能想考虑以基础结构作为代码开始。使用代码管道的云形成将确保自动化和一致的环境发布,并使您在市场上具有极高的价值
两者都可以通过awscli启动和管理。随着您的IaC能力和复杂性的增加,与CloudFormation相比,Terraform的模块化可能值得研究 非常感谢毛里齐奥。关于免费等级账户,它需要一张信用卡,而在我的国家,我们没有这样的信用卡。这就是问题所在,所以我正在等待我的老板下周批准我访问。对,不幸的是,AWS上没有信用卡,没有派对。在你们国家有办法获得虚拟信用卡吗