# AWS
* [CLI ](https://docs.aws.amazon.com/cli/latest/userguide/welcome-versions.html )
* Console [SignIn ](https://razerpay.signin.aws.amazon.com/console )
* EC2 vs Lambda [comparison ](https://www.nakivo.com/blog/aws-lambda-vs-amazon-ec2-which-one-to-choose/#:~:text=AWS%20EC2%20is%20a%20service,environments%2C%20and%20run%20custom%20applications.&text=AWS%20Lambda%20provides%20you%20a,an%20event%20trigger%20is%20activated. )
* EC2 : VM instance
* always running
* Pricing : CPU, memory, storage & runtime
* use-case : high-performance application, long running
* Lambda : Container
* Run when event triggered
* Pricing : based on running time
* Max Mem : 3008MB
* Max runtime : 900 sec
* use-case :
* automating task
* realtime log
* processing object upload to S3
* Storage
* EBS - Elastic Block Storage
* S3
* Messaging
* SNS - Simple Notification Service
* distributed Publish Subscribe system. push to subscriber
* multiple receiver allowed
* SQS - Simple Queue Service (Message Queue)
* distributed queuing system. polling by receiver
* single receiver
* VPC - Virtual Private Cloud
```sh
$ aws --version
$ aws configure
AWS Access Key ID [None]: ...
AWS Secret Access Key [None]: ...
Default region name [None]: ap-southeast-1
Default output format [None]:
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile < not set > None None
access_key ** **************7BMR shared-credentials-file
secret_key ** **************Ph2l shared-credentials-file
region ap-southeast-1 config-file ~/.aws/config
```
* setting folder `~/.aws/credentials` & `~/.aws/config`
* [Region Name ](https://docs.aws.amazon.com/general/latest/gr/rande.html )
* [SDK ](https://docs.aws.amazon.com/cli/latest/userguide/welcome-resources.html )
```sh
$ aws help
$ aws ec2 help
$ aws ec2 describe-instances help
```
## SSH
* login
```bash
$ ssh -i sshprivatekey.pem ubuntu@ec2-3-0-55-149.ap-southeast-1.compute.amazonaws.com
```
* copy
```bash
$ scp -i $HOME/aws/netyth_razerpay.pem ./razerpay-schema-df.sql ubuntu@ec2-3-0-55-149.ap-southeast-1.compute.amazonaws.com:/home/ubuntu/xx.sql
```
* sql
```bash
$ mysql --host=mysql.db.com --user=admin --password=12311
$ mysql --host=razerpay.cx77tjbbiuga.ap-southeast-1.rds.amazonaws.com --user=admin --password=....
// export databse schema to sql text
$ mysqldump -u username -p database_to_backup > backup_name.sql
```
```sql
mysql> CREATE DATABASE razerpay_singapore_prod;
mysql> exit
```
```bash
// import sql schema to database
$ mysql -u admin -p razerpay_singapore_prod < file.sql
```
```sql
mysql> SHOW DATABASES;
mysql> USE DATABASE;
mysql> SHOW TABLES;
mysql> DESCRIBE < table > ; // display table schema
mysql> SELECT user_id FROM df_receive_log;
mysql> DROP DATABASE `db-name` ; // delete database. use backtick if name have dash
mysql> exit
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
```
* PEM (Windows) file permission change
```sh
# display file permission
$ icacls < < pem file path > >
# Remove the permissions inheritance
$ icacls < < pem file path > > /inheritance:r /T
# Grant read permission to the current user
$ icacls < < pem file path > > /grant < < user name > >:R
# updated permission display
PS C:\dev\doc\ec2> icacls .\RPD-API.pem
.\RPD-API.pem RAZER\tenghie.yik:(R)
###
# ssh to aws ec2 using update pem file permission
$ ssh -i "netyth-ec2-test.pem" ubuntu@ec2-54-169-180-189.ap-southeast-1.compute.amazonaws.com
```
* PEM (ubuntu) file permission change
```sh
# change file permission
$ chmod 400 < < pem file > >
# ssh to aws ec2
$ ssh -i "netyth-ec2-test.pem" ubuntu@ec2-54-169-180-189.ap-southeast-1.compute.amazonaws.com
```