AWS Cloudformation과 함께 제공되는 초기 프로젝트 - 아키텍처 기반 자동화
6128 단어 cloudnodeawscloudformation
1. Desenho da arquitetura
2. Código e explicação
3. Conclusão
오브제티보 도 프로제토
A Motivação por trás desse projeto foi me capacitar em AWS, principalmente nos serviços Cloudformation, S3, Lambda, VPC, RDS e IG e nos conhecimentos de politicas de acesso para crescer profissionalmente. O objetivo do projeto é ser um registrador de arquivos excluídos, semper que um arquivo for deletado manualmente, ou por meio de politicas de um bucket, o S3 deverá alertar um Lambda para realizar um registro no RDS(MySQL). Pode ser uma boa solução para quem최대 sincronizar arquivos de um bucket com seu conteúdo em um banco RDS.
Todo o projeto pode ser encontrado nesse repositorio.
Desenho da arquitetura
Aarquitetura é autoexplicativa: Vamos precisar de um S3 para enviar notificações à um Lambda que vai se comunicar com um RDS. 단순함을 유지하기 위해 커뮤니카사오 엔트레 세스 서비스 의존성 및 허가를 받아야 합니다. VPC에 대해 정확한 정보를 얻으려면 이중 서브넷(RDS와 Lambda에 연결해야 함)과 Lambda에 버킷을 추가할 수 있는 역할 권한이 있습니다.
Código 및 설명
초기 vamos criar uma VPC para proteger o acesso ao nosso RDS:
SimpleVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
Tags:
- Key: stack
Value: des
"유형"과 "AWS::EC2::VPC"의 결합에 대한 재귀적 정의가 나오면 EC2 그룹에 VPC를 배치합니다. CidrBlock에서 VPC에 대한 IP disponível dentro에 대한 정확한 정의를 내리십시오.
정확히 두 개의 서브넷을 지정하고 VPC에 연결하지 않고 서브넷 그룹을 RDS와 연결합니다.
SimpleSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId:
Ref: SimpleVPC
CidrBlock: 10.0.1.0/24
AvailabilityZone: "us-east-1a"
Tags:
- Key: stack
Value: des
SimpleSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId:
Ref: SimpleVPC
CidrBlock: 10.0.2.0/24
AvailabilityZone: "us-east-1b"
Tags:
- Key: stack
Value: des
SimpleDBSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
SubnetIds:
- Ref: SimpleSubnet1
- Ref: SimpleSubnet2
DBSubnetGroupDescription: Subnet para o RDS
아무 것도 없는 RDS의 Podemos criar o nosso micro, que será suficiente para o nosso projeto pessoal, 4GB de storage (mais do que o suficiente), com uma engine MySQL, e utilizando do nosso grupo de subnets.
SQLDemoDbInstance:
Type: AWS::RDS::DBInstance
Properties:
DBName: !Ref pDbName
MasterUsername: !Ref pDbUser
MasterUserPassword: !Ref pDbPass
Engine: MySQL
DBInstanceClass: db.t2.micro
StorageType: gp2
PubliclyAccessible: False
DBSubnetGroupName:
Ref: SimpleDBSubnetGroup
AllocatedStorage: "4"
DBInstanceIdentifier: !Join ["-", [ "SQLDemoDbInstance", !Ref "AWS::Region" ]]
AvailabilityZone: !Select [1, !GetAZs ""]
공고문에서 가장 중요한 것은 정치권입니다. Nesse caso, eu quero que meu bucket notifique o Lambda semper que um objeto for removido, independente de seu estado anterior (versionado, taggeado, etc).
중요한 정의는 람다에 의존하고 람다의 소유물인 "함수"에 의존하며, 기능 !GetAtt를 사용하는 것입니다.
Perceba que eu estou definindo um filtro no S3 para notificar somente arquivos terminados em ".txt".
MyBucket:
Type: AWS::S3::Bucket
DependsOn: LambdaS3Permissao
Properties:
BucketName: !Ref BucketName
NotificationConfiguration:
LambdaConfigurations:
- Event: s3:ObjectRemoved:*
Function: !GetAtt LambdaS3Processamento.Arn
Filter:
S3Key:
Rules:
- Name: suffix
Value: .txt
Por fim, vamos criar a Lambda com um código simples que pode ser atualizado depois no console. Você também poderia apontar o seu código para um arquivo zip dentro de um bucket S3, mas vamos deixar mais simples para o nosso caso.
O nosso Lambda terá는 간단한 tarefa de receber o evento de notificação, extrair o nome do arquivo e salvar na base RDS com um timestamp associado. VPC의 보안 그룹에서 네트워크 서브넷으로 활용하는 것이 중요합니다.
LambdaS3Processamento:
Type: AWS::Lambda::Function
Properties:
Handler: index.execute
Role: !GetAtt LambdaS3Role.Arn
Runtime: nodejs12.x
MemorySize: 128
Timeout: 45
VpcConfig:
SecurityGroupIds:
- sg-0c094b8e5f85ae4b3
SubnetIds:
- !Ref SimpleSubnet1
- !Ref SimpleSubnet2
Code:
ZipFile: >
exports.execute = (event, context) => {
console.log(event);
}
콘솔 AWS에 기반한 인프라 구축을 용이하게 하기 위해 클라우드 포메이션 서비스를 사용하지 않고 템플릿을 가져오려면 고급 아카부 드 크리어를 사용하십시오.
Depois de criado com sucesso, precisamos alterar or código da nossa Lambda com o nosso projeto do github. Para isso, precisamos baixar o projeto e compactar no formato zip. Lambda 서비스가 콘솔 AWS를 수행하지 않고 zip 파일 형식으로 업로드합니다. Depois de atualizar o código, podemos testar enviando um arquivo ao nosso bucket e apagando logo em seguida.
결론
O AWS Cloudformation nos permitiu construir uma estrutura simples, de fácil utilizando apenas um arquivo. Semper que for necessário replicar a mesma estrutura, podemos usar o mesmo arquivo alterando poucos paraâmetros.
Reference
이 문제에 관하여(AWS Cloudformation과 함께 제공되는 초기 프로젝트 - 아키텍처 기반 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/walteralleyz/meu-primeiro-projeto-com-aws-cloudformation-automatizando-a-criacao-da-arquitetura-1k65텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)