调整 AWS WAF V2 Managed Rules 适应 WordPress

一、背景

AWS在2019年底的 re-Invent 2019 大会上,发布了WAF V2产品,提供Managed Rules。当使用WAF V2对Wordpress博客进行防护时候,一些正常的访问行为包括登录后提示二次确认邮箱、发送某些body过大的文章都会被WAF V2 AWS托管规则的CommonRule视为危险举动而拦截。本文将描述如何调整WAF V2托管规则并适应Wordpress应用。

Continue reading “调整 AWS WAF V2 Managed Rules 适应 WordPress”

Windows 10上安装 Jupyter Notebook

在Mac上安装 Jupyter Notebook 非常简单,一条命令 pip3 install jupyterlab 就可以搞定。请注意 Python version 如果是 3.x请用 pip3。安装后直接启动无问题。

在Windows 10 上,先后遇到 pip 库不是最新和 MS VC++ 库的问题。因此整理本文如下。

1、安装Python3

2、升级pip到最新版版本

在命令提示符(CMD)下,注意不是Powershell下,执行如下命令:

python -m pip install --upgrade pip
Continue reading “Windows 10上安装 Jupyter Notebook”

使用Putty登录EC2

AWS EC2生成的云服务器默认必须使用证书方式登录,系统生成的证书扩展名好似PEM格式。此证书对Linux和MacOS是友好的,可以使用 ssh -i keyname 的方登录EC2 Linux系统。

如果当前使用的是Windows桌面,那么有两个办法:

  • 第一种方式:通过Windows10的Store商店安装Linux子系统,目前Windows10支持的包括SuSE、Ubuntu等Linux系统在Windows直接使用
  • 第二种方式:使用Puttygen转换Key格式,从PEM转换为PPK格式,然后用Putty登录。

如下一段视频第二种方式。

为SES配置SNS Event追踪每一封发送的状态

一、背景

AWS Simple Email Service是用于大规模发送推广邮件的服务,用于支撑会员系统等合理合法的邮件群发。

SES的最佳实践是:每个邮件地址调用1次SES接口,单独发送一个唯一的地址。参考如下介绍。

发送限制基于的是收件人而不是电子邮件。例如,一封包含 10 个收件人的电子邮件占用 10 份配额。但是,建议不要在一次 SendEmail 调用中向多个收件人发送电子邮件,因为如果对 Amazon SES 的调用失败(例如,请求格式错误),整个电子邮件都将被拒绝,没有任何收件人能收到预期的电子邮件。我们建议您为每个收件人调用一次 SendEmail

https://docs.aws.amazon.com/zh_cn/ses/latest/DeveloperGuide/manage-sending-limits.html

SES默认是只显示管理整个domain的状态,包括邮件总数、退信比例等。如果希望追踪单封邮件发送,可以使用如下办法。

Continue reading “为SES配置SNS Event追踪每一封发送的状态”

AWS ECR私有镜像仓库的Docker Image上传和下载

注意:按下述文档流程,1)先创建仓库,再上传。否则直接上传就报错。2)不支持子目录,仓库叫什么,push时候就写什么名字,不支持写/子目录的格式

针对EKS 1.30、以及Graviton处理器的ARM架构容器构建的场景,系统采用 Amazon Linux 2(兼容CentOS7)或者 Amazon Linux 2023(兼容CentOS9),于2024年7月在AWS海外区域(新加坡)测试通过

本文的构建Docker的环境是一台位于云端的Amazon Linux EC2虚拟机,因为已经位于云端,上传下载软件包的速度更快。开发者也可以使用Ubuntu Linux,或者MacOS完成本文的工作。本文将创建一个hello world的php docker程序,并且发布到AWS ECR镜像仓库。

一、开发机的环境准备和常见Docker操作命令介绍

1、配置Docker准备环境

创建一台EC2节点,使用Amazon Linux 2(兼容CentOS7)或者Amazon Linux 2023(兼容CentOS9)操作系统,选择较小规格如 t3.medium 机型(2vCPU/4GB)即可,建议内存不低于4GB。根据要构建的Docker的复杂度,酌情提升配置。此外,为了构建ARM架构的容器集群,可选择采用Graviton2处理器的 t4g.medium 机型(2vCPU/4GB)进行容器构建。

Continue reading “AWS ECR私有镜像仓库的Docker Image上传和下载”

Redshift Demo

一、前言

Amazon Redshift 是一种完全托管的 PB 级云中数据仓库服务。Amazon Redshift 数据仓库是一个节点组成的各种计算资源构成的集合,这些节点归属于集群的组中。每个集群运行一个 Amazon Redshift 引擎并包含一个或多个数据库。开始时,您可以只使用几百 GB 数据,然后扩展至 1 PB 或更多。这样,您可以使用数据获得对您的业务和客户的新简介。

本文是个简单测试,本文汇总了AWS官网文档中的操作和交互流程,并整理成如下文章。

Continue reading “Redshift Demo”

迁移阿里云 ECS Windows 到 AWS EC2

一、前言

企业引入多云战略后,需要将一部分云资源从某云服务商迁移到另一个,这时候就需要依赖云厂家提供的迁移工具。不过,阿里云在Windows操作系统上做了一个限制,不允许Windows的虚拟机转换为镜像。这个信息的出处在阿里云官网的这里。如下截图。

针对Linux系统可以直接export为镜像文件,然后传输到AWS云上,但Windows系统不能导出。这可能是出于对微软License管理的角度。由此给迁移造成了难度。

如果应用部署不是特别复杂,建议在AWS上直接创建新的空白的Windows,然后部署应用,将应用的配置文件等打包通过S3复制到AWS上运行。

如果原有应用不便于重新部署,例如应用开发、维护团队已经离场,开发团队人员变更、甚至解散,无法为迁移提供技术支持,那么可以采用本文的方法:即使用其他第三方工具将阿里云上的Windows提取为镜像,然后导入AWS迁移。注:导入镜像时候,默认将采用AWS提供的Windows Server License运行。

Continue reading “迁移阿里云 ECS Windows 到 AWS EC2”

为EC2 G3机型的GPU实例安装Windows下3D驱动

注意:本篇编写于2019年,当时云端GPU机型较少,目前在针对3D设计、3D游戏、仿真等场景的最佳机型为G5,或者也可选上一代G4机型。在远程管理协议的选择上,推荐使用NICE DCV替代之前普遍使用的RDP和VNC。Windows场景可参考这篇,Linux场景可参考这篇

一、背景

GPU实例的用法分成两种,一种是偏向桌面图形的加速和渲染的,AWS提供了G3、G4系列,配合M60等图形加速卡;一种是偏向机器学习的训练、推理等场景,AWS提供了P2、P3系列,配合V100加速卡。

如果是机器学习场景,请使用AMI镜像中的deep learning镜像,Windows和Linux版本都可以。镜像会预装好多个机器学习框架,做到开箱即用。在创建实例的时候,可以选择输入关键字来搜索镜像。如下截图。

Continue reading “为EC2 G3机型的GPU实例安装Windows下3D驱动”

使用Aurora Global DB做Cross-Region DR切换

一、概述

AWS RDS Aurora for MySQL是兼容MySQL和PostgreSQL的云原生数据库。Aurora支持创建普通的跨区域只读副本,但不承诺复制延迟;Aurora也有一项专门用于跨区域业务容灾的特性:Global DB,跨Region数据复制在1秒左右。

Aurora Global DB的文档参考这里

使用Aurora Global DB也存在一些限制,例如MySQL版本必须是5.6版本等。由于很多用户对Aurora实施跨region复制和DR切换能够达到的效果没有直观感受,这里特意录制一段视频为大家讲解。视频的配音采用Amazon Polly语音合成。Polly产品的文档参考这里

Continue reading “使用Aurora Global DB做Cross-Region DR切换”

使用多账号+Organization区分不同部门的费用

一、前言

前文提到过,实现费用分割的方法之一是加tag,即Billing Dashboard里边的Cost Allocation Tag功能。配置说明参考上篇文章。在运行一段时间之后,看效果如下。

使用Tag区分费用的一个主要挑战就是,部分资源不支持标记tag,无法按照tag进行费用拆分。不支持的主要内容包括:Route53/WAF等。在使用比较重且较贵的Aurora RDS服务中,RDS实例消耗的CPU、内存是根据实例规格计费的,是可以使用tag区分费用的。但是,RDS生成的磁盘IO是不支持加tag的。如果有多个Aurora,不能区分哪一个数据库发生的IOPS,这是一点很大的局限。

Continue reading “使用多账号+Organization区分不同部门的费用”

使用Cloudwatch Agent监控系统运行情况

一、前言

1、背景

AWS对EC2的监控通过Cloudwatch在虚拟化层完成,也就是KVM的Hypervisor层完成。这一层,只能看到CPU占用率、磁盘IO、网络流入流出等数据,不能看到虚拟机Guest OS层面的数据。例如看不到内存使用率,看不到C盘使用率,系统进程数等。为了打开系统级监控,需要安装Cloudwatch的agent。如下图为监控效果。

Continue reading “使用Cloudwatch Agent监控系统运行情况”

使用TAG区分AWS费用账单

一、划分费用的方法

为了区分不同部门、不同业务线的费用,如下两个常见方法:

  1. 使用AWS Organization功能,创建独立的子账户,然后自动合并付款。缺点是自账户创建、认证、密码策略、管理维护稍微步骤多一些。详细文档参考这里
  2. 使用Tag区分。在当前账号下,创建资源都填写对应的资源标签。

本文描述的是方法2也就是Tag(标签)。详细文档参见这里的链接

Continue reading “使用TAG区分AWS费用账单”

执行 yarn application 连接失败且超时的错误解决

在AWS EMR使用多个Master高可用部署场景下,需要创建3台Master节点上。登录到其中一台节点,运行如下命令:

yarn application -list

在某些场景下会遇到如下报错。报错信息:

WARN ipc.Client: Failed to connect to server: ip-172-31-22-134.cn-northwest-1.compute.internal/172.31.22.134:8032: retries get failed due to exceeded maximum allowed retries number: 0
java.net.ConnectException: Connection refused
Continue reading “执行 yarn application 连接失败且超时的错误解决”