使用AWS Java SDK V2创建EC2、并通过Userdata指定Hostname

一、背景

在通过API创建EC2时候,需要提供几个基础参数,包括机型、AMI ID参数是必须显式指定的。其他参数是可选,如果不指定,AWS会使用默认的VPC、随机分配子网、默认的安全组等参数进行EC2创建。在这些参数中,没有名为Hostname主机名的参数。不过,由于AWS的API支持传入Userdata,可以在创建EC2后自动在EC2上执行脚本,因此,指定主机名的功能可通过在创建EC2的请求时候加上一段Userdata脚本解决。

Continue reading “使用AWS Java SDK V2创建EC2、并通过Userdata指定Hostname”

在CLI和CloudFormation中使用最新AMI

本文更新于2023年8月,加入了Amazon Linux 2023的查询方法

一、背景

在CloudFormation中,如果采用hardcode方式嵌入了当前的AMI ID,那么在未来一段时间AMI版本升级后,旧的版本就会过期,导致新创建的环境都必须再次运行yum update进行版本升级。同时,当AMI版本达到一定时间后,因为版本较旧存在安全隐患,可能会下架无法调用,这时候CloudFormation就失效了不能在运行。由此,需要一个在CloudFormation中能使用调用到最新AMI的办法。

本文将分别介绍在AWS CLI下调用最新AMI ID和在CloudFormation中调用System Manager查询的方法。

Continue reading “在CLI和CloudFormation中使用最新AMI”

Python批量开关EC2脚本

前提条件:

  • 需要本机配置AWS CLI的AK/SK;
  • 本机安装Python3;
  • 本机安装boto3库(执行pip3 install boto3)。

Python脚本如下:

import boto3.ec2
client = boto3.client('ec2')
ec2action = boto3.resource('ec2')

response = client.describe_instance_status(
    IncludeAllInstances=True
)

for i in response['InstanceStatuses']:
    instance = ec2action.Instance(i['InstanceId'])
    response1 = instance.stop(
            #DryRun=True,
            Force=True
    )
    print("instance: ", i['InstanceId'], "is being stopped." )
    print(response1)

以上为关机脚本。如果需要批量开机,替换stop为start即可。

ECS 201 Workshop(四)通过CodeDeploy实现蓝绿发布

ECS是AWS自行研发的容器管理平台,相对于流行的K8S架构,ECS更加简单易用,学习门槛相对很低。此外,Fargate无服务器技术的支持,将ECS完全从管理底层架构中解放出来,用户不需要再去关心Node节点的EC2配置,而是只在乎启动的任务,非常便于高效、快速的将既有容器投入使用。

ECS 201 Workshop分成:

共四个部分。此外,在ECS实验之前,还有一个基础篇是如何Build容器镜像,请参考

下面开始第四篇。演示视频如下:

Continue reading “ECS 201 Workshop(四)通过CodeDeploy实现蓝绿发布”

使用AWS CLI Profile时候遇到 报告”Key不存在” 的解决办法

1、故障现象

在AWS CLI下,执行aws s3 ls命令的时候,报告如下错误。

An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.

经过测试,执行其他CLI命令也会遇到相同的错误。

Continue reading “使用AWS CLI Profile时候遇到 报告”Key不存在” 的解决办法”

使用Profile切换AWS CLI认证区域

由于AWS中国区和海外区的系统完全隔离,因此在日常使用过程中经常会遇到需要切换AWS CLI的Access Key的问题。例如当向国内的S3上传文件,需要运行 aws configure 配置一个国内的Access Key;当给海外传输文件的时候,需要一个海外AWS账户的Access key,如此切换非常不方便。这时候,可以通过设置Profile进行切换。

Continue reading “使用Profile切换AWS CLI认证区域”

使用AWS CLI创建RDS for MySQL数据库

本文描述了如何从AWS CLI命令行工具管理创建并管理RDS Aurora for MySQL数据库集群。

一、准备工作

1、配置CLI

首先在要操作API的Linux上或者本地Windows上,配置好API,且设置API的默认区域是要进行操作的区域。

2、确认创建RDS时候要调用的安全规则组

请进入VPC界面,安全规则组的管理界面中,提前创建好一个数据库专用的安全组,并记录下他的ID,如下图,其中sg-0246xxxxx开头的这一串就是安全规则组ID,后续会用到。

Continue reading “使用AWS CLI创建RDS for MySQL数据库”