复制ECR上的镜像并指定新的Tag标签

一、背景

ECR上的镜像仓库有个选项叫做Tag immutability,可以要求指定唯一的标签,以避免版本冲突。有时候需要对当前镜像新生成一个新的标签做测试,且生成新的标签的过程不希望下载、构建、打包、上传等过程,只是希望复制一份,重新生成一个标签。此时可以用本文的方法操作。

Continue reading “复制ECR上的镜像并指定新的Tag标签”

使用Session Manager Plugin插件在开发者本机创建本地转发功能用于登录位于私有子网的EC2 Windows RDP远程桌面

摘要:本文介绍了如何不需要将EC2 Windows的3389端口暴露在互联网上,而是通过System Manager转发3389端口到开发者本机的方法。EC2 Windows可以一直位于内网,其安全组也无须放行任何端口,即可实现安全管理。

Continue reading “使用Session Manager Plugin插件在开发者本机创建本地转发功能用于登录位于私有子网的EC2 Windows RDP远程桌面”

创建低成本的工作在VPC内网的OpenSearch单节点并配置用户名密码身份验证

摘要:本文介绍如何快速创建一个低成本的、工作在VPC内网的OpenSearch单节点集群,并允许Master用户密码身份验证,然后测试上传文档和搜索,并分别在VPC内网的EC2 Windows和开发者本机用Session Manager转发方式访问Kibana。

Continue reading “创建低成本的工作在VPC内网的OpenSearch单节点并配置用户名密码身份验证”

使用Aurora Babelfish的Single-DB和Multi-DB模式在T-SQL和PostgreSQL之间共享数据

本文在AWS宁夏区Aurora PostgreSQL 15.3版本上测试通过。

一、背景

1、关于Babelfish

Aurora Babelfish通过Babelfish在TCP 1433端口上提供了对T-SQL(即SQL Server)的兼容。Aurora Babelfish的底层实现是PostgreSQL,工作在TCP协议5432端口,使用PL/pgSQL。因此,可以实现数据通过某一个接口写入,然后即可被任意接口读取的场景。

本文将演示Aurora Babelfish工作在Single-DB和Multi-DB两种配置下,如何在T-SQL和PL/pgSQL之间共享数据。

Continue reading “使用Aurora Babelfish的Single-DB和Multi-DB模式在T-SQL和PostgreSQL之间共享数据”

部署你的第一个边缘函数 Lambda@Edge并查看运行日志

更新于2024年1月,创建的函数可使用Nodejs 16/18运行

一、背景

AWS的CDN服务CloudFront在Edge端(边缘侧)具有一定的算力,可运行简单程序满足应用交互需要,这些场景包括:

  • 身份验证
  • 无须连接源站(ALB/EC2/S3)的情况下进行业务逻辑运算给源站卸载(Offload)压力
  • 按访问者的环境(如浏览器)、或访问设备等信息定制输出结果
  • 为静态源站(S3)增加处理能力
  • 防爬虫等应用层防护(可与ALB/WAF搭配防护)

实现这些场景,可通过Edge的边缘侧算力实现。具体实现又有两个产品:Lambda@Edge和CloudFront Function。

Continue reading “部署你的第一个边缘函数 Lambda@Edge并查看运行日志”

Amazon Linux 2023 快速部署 CloudWatch Agent 监控内存和文件系统使用率脚本

一、配置本机使用的IAM Role

创建一个IAM Role,绑定2个IAM Policy,分别选中AWS managed Policy即系统内置的AmazonSSMManagedInstanceCore用于Session Manager,然后选择CloudWatch上传日志的Policy叫做CloudWatchAgentAdminPolicy

将这个IAM Role绑定到EC2上。绑定后需要一段时间才可以生效。如果不想等待这段时间,可以重启EC2则立刻生效。如果您不掌握如何创建EC2使用的IAM Role,当前EC2也没有使用IAM Role,那么请参考本篇创建IAM Role并绑定到EC2。

Continue reading “Amazon Linux 2023 快速部署 CloudWatch Agent 监控内存和文件系统使用率脚本”

在EC2 Debian操作系统上安装Agent并使用EC2 Connect功能

注:截止2023年7月,EC2 Instance Connect功能只在海外区域可用,Session Manager在海外区和中国区都可用。

一、背景

Debian是常用主流Linux系统之一,Ubuntu就是源自Debian体系发展出来的。Debian在云端使用频度不如CentOS/Ubuntu广泛。在AWS云上提供的EC2 AMI中,可在创建EC2向导界面直接选择Debian 11。

不过,这个Debian 11的AMI镜像虽然是AWS官方维护的,但是其自身没有集成System Manager Agent,也没有集成EC2 Instance Connect插件。因此,在EC2控制台上,点击Connect按钮,无论选择EC2 Instance Connect还是选择Session Manager,都会提示无法连接,如下截图。

Continue reading “在EC2 Debian操作系统上安装Agent并使用EC2 Connect功能”

使用Athena分析在S3上的WAF Log

一、背景

在使用WAF保护业务系统的过程中,经常需要查询历史日志,分析特定防护对象的防护效果,查看拦截的请求,或查看访问特定URL的防护效果。这时候就需要用到WAF日志功能。

AWS WAF支持将日志输出到CloudWatch Log Groups,Kinesis,以及S3。将日志输出到CloudWatch Log Groups使用方便,但是存储成本高;将日志输出到Kinesis后可连接多种投递方式,灵活且延迟低,但技术架构稍微复杂。将WAF日志存储到S3数据湖,可实现最低低成本储存日志,通过Athena可快速方便查询。

Continue reading “使用Athena分析在S3上的WAF Log”

如何在多账号和单账号选择

提示:本文详细阅读需要20-30分钟时间

概述:本文以使用S3+Glue+Redshift+MWAA(Airflow)为例,介绍使用两种不同方式区分Prod环境和Test环境的权限。

目录如下:

  • 一、如何定义多账号和单账号
  • 二、多账号的隔离效果测试
  • 三、单账号下多用户的隔离效果测试
  • 四、二者对比
  • 五、小结
Continue reading “如何在多账号和单账号选择”

在使用Graviton处理器的ARM架构的EC2构建JAVA应用

一、背景

AWS Graviton是AWS推出的ARM架构处理器,目前已经在AWS中国区域、全球区域大规模可用。使用Graviton处理器的EC2机型,以及基于Graviton处理器的托管服务包括RDS、Redis、OpenSearch,可获得比同配置的Intel处理器机型更高的性能,且同配置对比成本更低。

更多信息可参考:

https://aws.amazon.com/cn/ec2/graviton/
https://aws.amazon.com/cn/campaigns/graviton/

本文将展示Java的跨平台特性,即可以在ARM架构的EC2上构建Java应用,也可以在Intel处理器上构建好JAR包后,直接复制到ARM架构上运行。

Continue reading “在使用Graviton处理器的ARM架构的EC2构建JAVA应用”

在Redshift上使用comment语句

一、背景

Redshift是用于大量数据分析的列式数据仓库。Redshift并不支持所有PostgreSQL的语法。

关于Redshift支持的的限制,可参考这里 Unsupported PostgreSQL functions 的文档。

在这篇文章中,明确提到Comment information functions是不被支持的。

不过,在Redshift上可使用comment命令来为数据库的表、列添加注释。

Continue reading “在Redshift上使用comment语句”