首页 > 其他分享 >Aws Aurora构建高级冗余和服务集成总结

Aws Aurora构建高级冗余和服务集成总结

时间:2023-04-13 20:34:19浏览次数:47  
标签:USA Aws Aurora aws venue venues pg 冗余 SNS

本文通过把存储在S3中的csv文件导入到Aurora数据库实例中,同时订阅一个Amazon Simple Notification Service(SNS)来通知到指定邮箱。

Aws Aurora构建高级冗余和服务集成总结_sed

资源清单

  • 一个MyDB Postgresql数据库,一张表venues
  • 一个可以连接到数据库的EC2
  • 一个SNS主题myUpdatedSNS
  • 一个Lambda函数myNotifyUpdate
  • 一个S3桶mys3-pg-test,包含initial.csv,additional.csv,test.csv

创建S3

TestVenues.csv
201,Portico,Concert_hall,LosFake,MN,21008,USA,limited
202,Barn,Indoor_small,Faketown,FL,78966,USA,closed
203,Barn,Indoor_small,LakeFake,CA,85820,USA,closed
InitialVenues.csv
0,Grounds,Outdoor_large,Faketown,WA,35238,USA,limited
1,Center,Indoor_small,LosFake,MN,86411,USA,limited
2,Hall,Indoor_small,Fakespot,TN,35353,USA,limited
AdditionalVenues.csv
351,Amphitheater,Concert_hall,San Fake,FL,15560,USA,closed
352,Complex,Outdoor_large,Faketown,WA,65095,USA,open
353,Stadium,Outdoor_large,LakeFake,WA,92033,USA,open

创建SNS主题

Aws Aurora构建高级冗余和服务集成总结_sed_02

Aws Aurora构建高级冗余和服务集成总结_sed_03

Aws Aurora构建高级冗余和服务集成总结_数据库_04


创建Lambda函数

import json
import boto3
import os

def lambda_handler(event, context):
    
  client = boto3.client('sns')
  try:
    response = client.publish(TargetArn=os.environ['SNSarn'], Message=json.dumps(event))
  except:
    print("an error occurred")
  return {
    'statusCode': 200,
    'body': json.dumps(event)
  }

Aws Aurora构建高级冗余和服务集成总结_sed_05

Aws Aurora构建高级冗余和服务集成总结_数据库_06

Aws Aurora构建高级冗余和服务集成总结_sed_07

Aws Aurora构建高级冗余和服务集成总结_json_08

注意:用SNS的ARN来替换这个值

Aws Aurora构建高级冗余和服务集成总结_json_09

另外,需要给Lambda赋予访问SNS的权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:*",
                "SNS:*",
                "ec2:CreateNetworkInterface"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

创建Role

Aws Aurora构建高级冗余和服务集成总结_sed_10

Aws Aurora构建高级冗余和服务集成总结_json_11

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Aws Aurora构建高级冗余和服务集成总结_sed_12


创建PG数据库

Aws Aurora构建高级冗余和服务集成总结_json_13

Aws Aurora构建高级冗余和服务集成总结_sed_14

Aws Aurora构建高级冗余和服务集成总结_sed_15

Aws Aurora构建高级冗余和服务集成总结_json_16

后续部分默认设置即可。

数据库绑定角色

Aws Aurora构建高级冗余和服务集成总结_json_17

数据库初始化
-- Table: public.venues

-- DROP TABLE IF EXISTS public.venues;

CREATE TABLE IF NOT EXISTS public.venues
(
    venue_id integer NOT NULL,
    venue_name text COLLATE pg_catalog."default",
    venue_type text COLLATE pg_catalog."default",
    venue_city text COLLATE pg_catalog."default",
    venue_state text COLLATE pg_catalog."default",
    venue_zip integer,
    venue_country text COLLATE pg_catalog."default",
    venue_status text COLLATE pg_catalog."default",
    CONSTRAINT venues_pkey PRIMARY KEY (venue_id)
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.venues
    OWNER to dbadmin;
创建S3扩展表
CREATE EXTENSION IF NOT EXISTS aws_s3 CASCADE;
从S3导入InitialVenues的数据

注意:AK/SK需要替换成自己账号的属性。

SELECT aws_s3.table_import_from_s3(
   'venues',
   '',
   '(format csv)',
   'mys3-pg-test',
   'InitialVenues.csv',
   'cn-north-1',
   'AK',
   'SK',
   ''
);

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PostgreSQL.S3Import.html#aws_s3.table_import_from_s3

Lambda函数发送SNS

创建Lamdba扩展

CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;

Lamdba函数触发SNS消息

SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('arn:aws-cn:lambda:cn-north-1:751318751053:function:myNotifyUpdate', 'cn-north-1'), '{"body": "Data ingested from s3 file"}'::json );


标签:USA,Aws,Aurora,aws,venue,venues,pg,冗余,SNS
From: https://blog.51cto.com/u_12153243/6188348

相关文章

  • 华为OD机试 最左侧冗余覆盖子串
    本期题目:最左侧冗余覆盖子串题目给定两个字符串s1和s2和正整数K,其中s1长度为n1,s2长度为n2,在s2中选一个子串,满足:该子串长度为n1+k该子串中包含s1中全部字母,该子串每个字母出现次数不小于s1中对应的字母,我们称s2以长度k冗余覆盖s1,给定s1,s2,k,求最左侧的s2以长度k冗余覆盖......
  • AWS上DevOps实验(三)--- 使用Terraform创建Web应用基础架构
    从本文档起,作者计划在AWS上做一系列DevOps/IaC相关实验,本文是第三篇,使用Terraform创建Web应用基础架构。本次实验架构图本次实验架构图如下:Terraform代码本次代码可以从下载代码结构如下:文档如下:$lltotal52-rw-r--r--1ec2-userec2-user3201Mar603:22appser......
  • Aws上如何设置受限权限的账号
    近期,老板安排了一个要求,希望给新来的员工一个IAM用户,拥有除了修改其他用户信息之外,可以访问其他一切资源。同时,要求这个用户可以自己修改密码。PowerUserAccess经过查询官方资料,发现PowerUserAccess符合这个要求,貌似管理员之外的所有权限都满足。https://docs.aws.amazon.com/zh_cn......
  • PrintDocument DrawString C# 换行问题
    在使用80mm小票机做再次开发时使用DrawString无法自动换行导致文字被截断终于找到解决方案:别忘了给我点赞,留言源代码如下:立跑可用 链接:https://pan.baidu.com/s/1vywMUvGXMaFh_1o7ywDQTA?pwd=yyyy提取码:yyyy......
  • TOTAL:AWS 认证解决方案架构师助理 (SAA-C03)
    TOTAL:AWS认证解决方案架构师助理(SAA-C03)超值:通过AWSCertifiedSolutionsArchitect–AssociateSAA-C03考试+AWSEssentials和2次免费练习考试课程英文名:TOTALAWSCertifiedSolutionsArchitectAssociate(SAA-C03)此视频教程共15.9GB,中英双语字幕,画质清晰无......
  • AWS+vCenter Server
    1、AWS基础存储架构Dynamo的主要数据类型和架构的主要技术是什么?    AWS基础存储架构Dynamo是一种NoSQL数据库,它支持键值对存储。Dynamo的主要数据类型包括字符串、数字、二进制、布尔、集合和空值。Dynamo的架构主要技术包括分区、复制和存储。Dynamo使用分区来分割数据并将......
  • 关于AWS-CN-中国-CloudFront服务使用的IP地址段范围
    首先,我们得知道我们创建了一个CloudFront后,目前中国有4个边缘站点,北京、上海、中卫和 深圳但是那么它的IP地址并不是固定的,即使同一个边缘站点,IP也是会有变化的那么如何能知道CloudFront使用的IP地址范围段呢?先说答案,目前我们没有办法得到准确的只是中国区的CloudFront的IP范......
  • CRC Cyclic Redundancy Check 循环冗余校验 CRCs Cyclic Redundancy Codes
    前言在数据传输过程中,难免会因为硬件问题,信号干扰,缓存问题,代码逻辑等导致读取到的数据与写入的数据不一致,对于这种错误的数据,我们需要能够及时发现并且进行错误处理。如果把错误的数据当作正常数据使用,会导致不可预料的各种错误。如何校验数据是否正确,正常做法就是声明一种算法,......
  • AWS- [iam list-role-policies] - Description
    awsiamlist-role-policies--role-namexxxxlist-role-policies—AWSCLI1.27.104CommandReference(amazon.com)ListsthenamesoftheinlinepoliciesthatareembeddedinthespecifiedIAMrole.AnIAMrolecanalsohavemanagedpoliciesattachedtoit.......
  • 关于IAM-基于aws-cli的方式将policy策略attach到role-以及需要的最小的权限-Policy策
    关于如何使用命令行创建policy,可以参考笔者的另一篇文章《关于IAM-基于aws-cli的方式创建Policy策略-以及需要的最小的权限-Policy策略》这里笔者主要讲,如何使用awscli方式的命令行将policy策略attach添加到指定的role当中,命令如下:aws--profile123iamattach-role-policy--......