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

aws_commands

Uploaded by

Diego Rayklash
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

aws_commands

Uploaded by

Diego Rayklash
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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 admin@34.230.44.6

--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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy