0% found this document useful (0 votes)
26 views

aws_commands

Uploaded by

Diego Rayklash
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

aws_commands

Uploaded by

Diego Rayklash
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

--- AWS Skill Guild LABS -----

-- training
https://www.aws.training/

--labs
https://us-east-1.student.classrooms.aws.training/

--workshops

https://workshops.aws/

----- Cuso Netec -------------


https://www.npl.netecdigital.com

user : correo
pass: AWS-PRACT

--- EC2 -----

-- Acceso ssh a Instancia EC2


sudo ssh -i ~/Keys/debian_keys.pem [email protected]

--Start instance
aws ec2 run-instances \
--image-id ami-a1b2c3d4e5example \
--instance-type t3.micro \
--key-name MyKeyPair \
--disable-api-stop \
...

--Stop instance
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-09ae2aa1a654c2363

--------- IAM USERS ---------

--Set credentials
aws configure

--List IAM users


aws iam list-users
xx

-------- PROFILES ------------


--List profiles
aws configure list-profiles

--Add user profile


nano ~/.aws/config

add user profile

nano ~/.aws/credentials

add user access keys on same profile

--Set existing prifile


export AWS_PROFILE=default

---------- S3 commands -------------------

--LIST buckets

aws s3 ls

-- Create bucket
aws s3 mb s3://bucket_name

--Upload file to bucket


aws s3 cp /home/ssm-user/HappyFace.jpg s3://labclibucket-NUMBER

-- List bucket content


aws s3 ls s3://labclibucket-NUMBER

-------- Roles -----------


-- List Roles

aws iam list-roles

-- Get role ARN by query

aws iam list-roles --query "Roles[?contains(RoleName, 'LambdaDeployment')].Arn" --


output text

------------- Ver metadatos de una instancia EC2 por categoria ----

1.

TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-


metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v
http://169.254.169.254/latest/meta-data/
2.

curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-


data/CATEGORIA

Ej.

curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-


data/public-hostname

------- EC2 Instance User Data --------------

Ej.

#!/bin/bash
yum -y update

# Install and enable AWS Systems Manager Agent


cd /tmp
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent

# Install Apache Web Server and PHP


yum install -y httpd mysql
amazon-linux-extras install -y php7.2

# Download Inventory App Lab files


wget https://us-east-1-tcprod.s3.us-east-1.amazonaws.com/courses/ILT-TF-200-
ARCHIT/v7.5.0.prod-8b95bd17/lab-4-HA/scripts/inventory-app.zip
unzip inventory-app.zip -d /var/www/html/

# Download and install the AWS SDK for PHP


wget https://github.com/aws/aws-sdk-php/releases/download/3.62.3/aws.zip
unzip -q aws.zip -d /var/www/html

# Load Amazon Aurora DB connection details from AWS CloudFormation


un="dbadmin"
pw="lab-password"
ep="inventory-cluster.cluster-c4ehwqu5ajko.us-east-1.rds.amazonaws.com"
db="inventory"
#mysql -u $un -p$pw -h $ep $db < /var/www/html/sql/inventory.sql

# Populate PHP app settings with DB info


sed -i "s/DBENDPOINT/$ep/g" /var/www/html/get-parameters.php
sed -i "s/DBNAME/$db/g" /var/www/html/get-parameters.php
sed -i "s/DBUSERNAME/$un/g" /var/www/html/get-parameters.php
sed -i "s/DBPASSWORD/$pw/g" /var/www/html/get-parameters.php

# Turn on web server


systemctl start httpd.service
systemctl enable httpd.service
------------- Agregar Variables de entorno de recursos ---------------------

-- Exportar la cuenta aws com variable


export awsAccount=`aws sts get-caller-identity --query "Account" --output text` &&
echo awsAccount=$awsAccount >> ~/.bashrc

-- Consulta metadatos de la instancia EC2 y configura region aws de la instacia


EC2 com ovariable
export awsRegion=`curl -s http://169.254.169.254/latest/meta-data/placement/region`
&& echo awsRegion=$awsRegion >> ~/.bashrc

-- Exporta ID de la VPC
export VPC=`aws ec2 describe-vpcs --filters Name=tag:Name,Values=wa-lab-vpc --query
'Vpcs[*].VpcId' --output text --region $awsRegion` && echo VPC=$VPC >> ~/.bashrc

--Exporta Zona de disponibilidad


export awsAZ1=`aws ec2 describe-availability-zones --region $awsRegion --query
'AvailabilityZones[].ZoneName[]|[0]' --output text` && echo awsAZ1=$awsAZ1 >>
~/.bashrc

------ Varible de entorno mediante Query --------------

--- Recuperar Arn de Politica


policyArn=$(aws iam list-policies --output text --query 'Policies[?PolicyName ==
`S3-Delete-Bucket-Policy`].Arn')

--Recuperar Arn de Rol


roleArn=$(aws iam list-roles --output text --query 'Roles[?contains(RoleName,
`lambdaPollyRole`) == `true`].Arn')

------ Checar version de politica --------------


aws iam get-policy-version --policy-arn $policyArn --version-id v1

----- Asignar politica a rol --------------


aws iam attach-role-policy --policy-arn $policyArn --role-name notes-application-
role

----- Checar politicas adjuntas a un rol -----------


aws iam list-attached-role-policies --role-name notes-application-role
---------- S3 Buckets -------------------

--- Listar buckets


aws s3 ls

--List all buckets with s3api


aws s3api list-buckets

-- Get s3 bucket name by query


aws s3api list-buckets --query "Buckets[?contains(Name, 'bookmark')].Name" --
output text

------ Borrar un Bucket

aws s3 rb s3://$bucketToDelete

----- Subir archivo en python

s3Client.upload_file(filePath,
mp3Bucket,
UserId+'/'+NoteId+'.mp3')

------ Agregar variable de objeto bucket a entorno

apiBucket=$(aws s3api list-buckets --output text --query 'Buckets[?contains(Name,


`apibucket`) == `true`] | [0].Name')
notesTable='Notes'

--- Asignar un bucket a variable por palabra / query ---

bucketToDelete=$(aws s3api list-buckets --output text --query 'Buckets[?


contains(Name, `deletemebucket`) == `true`] | [0].Name')

------ Creacion de subredes

------------ Crear subred publica ----------------

aws ec2 create-subnet --vpc-id $VPC --cidr-block "10.100.2.0/24" --availability-


zone $awsAZ2 --tag-specifications 'ResourceType=subnet, Tags=[{Key=Name,Value=wa-
public-subnet-2}]' --region $awsRegion
------------ Crear subred privada ---------------------

aws ec2 create-subnet --vpc-id $VPC --cidr-block "10.100.3.0/24" --availability-


zone $awsAZ2 --tag-specifications 'ResourceType=subnet, Tags=[{Key=Name,Value=wa-
private-subnet-2}]' --region $awsRegion

----------- Exportar subred publica como variable

export publicSubnetId=`aws ec2 describe-subnets --filters Name=tag:Name,Values=wa-


public-subnet-2 --query 'Subnets[*].SubnetId' --output text --region $awsRegion` &&
echo publicSubnetId=$publicSubnetId >> ~/.bashrc

----------- Exportar subred privada como variable

export privateSubnetId=`aws ec2 describe-subnets --filters Name=tag:Name,Values=wa-


private-subnet-2 --query 'Subnets[*].SubnetId' --output text --region $awsRegion`
&& echo privateSubnetId=$privateSubnetId >> ~/.bashrc

------- Tablas de enrutamiento

----------- Exportar tabla de enrutamiento de subred publica como variables

export publicRt=`aws ec2 describe-route-tables --filters Name=tag:Name,Values=wa-


public-rt --query 'RouteTables[*].RouteTableId' --output text --region $awsRegion`
&& echo publicRt=$publicRt >> ~/.bashrc

----------- Exportar tabla de enrutamiento de subred privada como variables

export privateRt=`aws ec2 describe-route-tables --filters Name=tag:Name,Values=wa-


private-rt --query 'RouteTables[*].RouteTableId' --output text --region $awsRegion`
&& echo privateRt=$privateRt >> ~/.bashrc

----- Asociar tabla de enrutamiento

-- Subred publica

aws ec2 associate-route-table --subnet-id $publicSubnetId --route-table-id


$publicRt --region $awsRegion

--Subred privada

aws ec2 associate-route-table --subnet-id $privateSubnetId --route-table-id


$privateRt --region $awsRegion
-- Crear subredes en primer zona de disponibilidad

aws ec2 create-subnet --vpc-id $VPC --cidr-block "10.100.4.0/24" --availability-


zone $awsAZ1 --tag-specifications 'ResourceType=subnet, Tags=[{Key=Name,Value=wa-
rds-subnet-1}]' --region $awsRegion

-- Crear subredes en primer zona de disponibilidad

aws ec2 create-subnet --vpc-id $VPC --cidr-block "10.100.5.0/24" --availability-


zone $awsAZ2 --tag-specifications 'ResourceType=subnet, Tags=[{Key=Name,Value=wa-
rds-subnet-2}]' --region $awsRegion

---- Exportar primer subred RDS

export rdsSubnet1Id=`aws ec2 describe-subnets --filters Name=tag:Name,Values=wa-


rds-subnet-1 --query 'Subnets[*].SubnetId' --output text --region $awsRegion` &&
echo rdsSubnet1Id=$rdsSubnet1Id >> ~/.bashrc

-- Exportar segunda subred para RDS


export rdsSubnet2Id=`aws ec2 describe-subnets --filters Name=tag:Name,Values=wa-
rds-subnet-2 --query 'Subnets[*].SubnetId' --output text --region $awsRegion` &&
echo rdsSubnet2Id=$rdsSubnet2Id >> ~/.bashrc

--- Asociar subred 1para RDS a tabla de enrutamiento

aws ec2 associate-route-table --subnet-id $rdsSubnet1Id --route-table-id $privateRt


--region $awsRegion

--- Asociar subred 2para RDS a tabla de enrutamiento


aws ec2 associate-route-table --subnet-id $rdsSubnet2Id --route-table-id $privateRt
--region $awsRegion

------- Crear grupo de subredes RDS

aws rds create-db-subnet-group --db-subnet-group-name "wa-rds-subnet-group" --db-


subnet-group-description "WA RDS Subnet Group" --subnet-ids $rdsSubnet1Id
$rdsSubnet2Id --region $awsRegion

--------- Crear grupo de seguridad IAM para RDS


aws ec2 create-security-group --description "RDS Security group" --group-name "wa-
rds-sg" --vpc-id $VPC --region $awsRegion
--------- Exportar id de gurpo de seguridad

export rdsSg=`aws ec2 describe-security-groups --filters Name=group-name,Values=wa-


rds-sg --query 'SecurityGroups[*].GroupId' --output text --region $awsRegion` &&
echo rdsSg=$rdsSg >> ~/.bashrc
export ec2DbSg=`aws ec2 describe-security-groups --filters Name=group-
name,Values=wa-database-sg --query 'SecurityGroups[*].GroupId' --output text --
region $awsRegion` && echo ec2DbSg=$ec2DbSg >> ~/.bashrc

----------------- Permitir comunicacion entre grupo de seguridad RDS

aws ec2 authorize-security-group-ingress --group-id $rdsSg --source-group $ec2DbSg


--protocol "tcp" --port "3306" --region $awsRegion

------------- Crear instancia MUltiAZ

aws rds create-db-instance --db-name "WaRdsDb" --db-instance-identifier


"waDbInstance" --allocated-storage 20 --db-instance-class db.t3.micro --engine
"mariadb" --master-username "mainuser" --master-user-password "WaStr0ngP4ssw0rd" --
vpc-security-group-ids $rdsSg --db-subnet-group-name "wa-rds-subnet-group" --multi-
az --no-publicly-accessible --backup-retention-period 0 --region $awsRegion

--------------- Verificar disponibilidad de punto de enlace de instancia RDS

aws rds describe-db-instances --db-instance-identifier "waDbInstance" --query


'DBInstances[*].Endpoint.Address' --output text --region $awsRegion

Se espera:

wadbinstance.cyk7pychnesl.us-west-2.rds.amazonaws.com

------------ Comprobar valores de parametros de coneccion APP > RDS guardados en


almacén

aws ssm get-parameters --names "DbPrivateDns" --region $awsRegion --output table

--------------- Actualizar valor del servidor RDS en los parámetros de conexion


guardados en el almacen

----- Exportar el puntos de enlace de RDS

export rdsEndPoint=`aws rds describe-db-instances --db-instance-identifier


"waDbInstance" --query 'DBInstances[*].Endpoint.Address' --output text --region
$awsRegion` && echo rdsEndPoint=$rdsEndPoint >> ~/.bashrc
----- Actualizar el valor

aws ssm put-parameter --name "DbPrivateDns" --value $rdsEndPoint --overwrite --


region $awsRegion

----- Migrar base de datos en EC2 a RDS. Systems Manager : Run Commnad
--Script

#!/bin/bash
# Database backup using mysqldump utility
mysqldump sample > backup.sql
# Add RDS endpoint as an environment variable
export awsRegion=`curl -s http://169.254.169.254/latest/meta-data/placement/region`
export rdsendpoint=`aws ssm get-parameter --name DbPrivateDns --query
'Parameter.Value' --region $awsRegion --output text`
# Set RDS instance admin user variable
export user=mainuser
# Set the RDS admin password value stored in Secrets Manager as variable
export rdspasswd=`aws secretsmanager get-secret-value --secret-id rdsPassword --
query 'SecretString' --output text --region $awsRegion`
# Below commands creates database, loads MySQL backup into RDS, creates a user and
set permissions in RDS database instance
mysql -h $rdsendpoint -u $user -p$rdspasswd -e "CREATE DATABASE sample;"
mysql -h $rdsendpoint -u $user -p$rdspasswd -e "USE sample;source backup.sql;"
mysql -h $rdsendpoint -u $user -p$rdspasswd -e "CREATE USER 'tutorial_user'@'%'
IDENTIFIED BY 'WaFram3w0rk';"
mysql -h $rdsendpoint -u $user -p$rdspasswd -e "GRANT SELECT, INSERT, UPDATE,
DELETE ON *.* TO 'tutorial_user'@'%' WITH GRANT OPTION;"
mysql -h $rdsendpoint -u $user -p$rdspasswd -e "FLUSH PRIVILEGES;"

-------------- Lambda -------------------

-------Create function

aws lambda create-function \


--function-name $folderName \
--role $roleArn \
--environment Variables={TABLE_NAME=$notesTable} \
--zip-file fileb://$folderName.zip

------- Agregar variables de sistema a entorno lambda

aws lambda update-function-configuration \


--function-name dictate-function \
--environment Variables="{MP3_BUCKET_NAME=$apiBucket, TABLE_NAME=$notesTable}"
-------- Actualizar codigo de la funcion

aws lambda update-function-code \


--function-name dictate-function \
--zip-file fileb://dictate-function.zip

-------Invoke a function

aws lambda invoke \


--function-name $functionName \
--payload fileb://event.json response.txt

--- Agregar permisos a funciones lambda para llamados por apigateway

aws lambda add-permission --function-name delete-function --statement-id apiInvoke


--action lambda:InvokeFunction --principal apigateway.amazonaws.com

aws lambda add-permission --function-name dictate-function --statement-id apiInvoke


--action lambda:InvokeFunction --principal apigateway.amazonaws.com

aws lambda add-permission --function-name search-function --statement-id apiInvoke


--action lambda:InvokeFunction --principal apigateway.amazonaws.com

--- Cognito ----

--- Crear nuebo usuario en grupo de Cognito


aws cognito-idp sign-up --client-id $AppClientId --username student --password
student

--- Confirmar usuario creado

aws cognito-idp admin-confirm-sign-up --user-pool-id $CognitoPoolId --username


student

---Recuperar region
region=$(curl http://169.254.169.254/latest/meta-data/placement/region -s)

--Recuperar cuenta

acct=$(aws sts get-caller-identity --output text --query "Account")

--- Recuperar Cognito user pool id


poolId=$(aws cognito-idp list-user-pools --max-results 1 --output text --query
"UserPools[].Id")

--- Recuperar Congnito user pool arn


poolArn="arn:aws:cognito-idp:$region:$acct:userpool/$poolId"

------------ Apigateway ----------------

--- Recuperar api gateway id por nombre

apiId=$(aws apigateway get-rest-apis --query "items[?name == 'PollyNotesAPI'].id"


--output text)

--- Importar recursos (llamadas) desde definicion yaml a un api gateway


aws apigateway put-rest-api --rest-api-id $apiId --mode merge --body
'fileb://PollyNotesAPI-swagger.yaml'

-- Implementar recursos de api nuevos


aws apigateway create-deployment --rest-api-id $apiId --stage-name Prod

----- SAM (scripts for serverless resources )

---- Obtiene recursos , Compilar la aplicacion y crea un contenedor


sam build --use-container

---- Despliega el contenedor

-- sam deploy --stack-name polly-notes-api --s3-bucket $apiBucket --parameter-


overrides apiBucket=$apiBucket

---------- SAM ------------------


sam init -- Genera un template basado en las elecciones de configuracion
sam build -- Genera y compila los artefactos de implementación a partir del
template
sam deploy -- Despliega aplicacion en la nube a partir de los artefactos de
implementación del paso anterior

You might also like