【免費註冊】 【會員登入】 【個人資料】 【會員列表】 【論壇幫助】 【論壇搜尋】 【登出論壇】

∮Ω奧米加空間∮
∮Ω奧米加空間∮»技術文件區»【原創】amazon aws 學習筆記

訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆
作者 主題    
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 1 篇) 【原創】amazon aws 學習筆記

一。將資料 sync 上傳到 AWS S3 並且預設為分享

1.首先使用主帳號登入開啟一個只允許存取 S3 的帳號,記下帳號與密碼

2.建立一個 Buckets (儲存桶) 名稱我們暫定 test ,上傳檔案 test.txt

使用 EC2 裡的 Linux 為範例

3.下載S3存取工具與安裝
yum install -y unzip
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

檢查版本號確認安裝是否成功
/usr/local/bin/aws --version
> aws-cli/1.10.11 Python/2.6.6 Linux/2.6.32-573.18.1.el6.centos.plus.x86_64 botocore/1.4.2

4.設定存取 S3 的設定值
aws configure
> AWS Access Key ID [None]: ******
> AWS Secret Access Key [None]: ***********
> Default region name [None]: us-west-2   #依你的 EC2 所在區域設定
> Default output format [None]:

5.測試是否可以列出 S3
aws s3 ls
> 2016-03-10 00:14:27 test

6.使用 sync 將本機 test 資料夾內全部的內容上傳到 test Buckets (儲存桶) 內,並且開所有人都可以存取
aws s3 sync /test/ s3://test --delete --exclude ".Sync*" --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers

如果是備份檔案可以加上 --storage-class 改變儲存的標準 這裡看定價 https://aws.amazon.com/tw/s3/pricing/
預設是標準儲存 前 1 TB / 月 $0.0300 每 GB

標準低頻率訪問儲存 前 1 TB / 月 $0.0125 每 GB
--storage-class STANDARD_IA

低冗餘儲存 前 1 TB / 月 $0.0240 每 GB
--storage-class REDUCED_REDUNDANCY


7.連線方式
未開啟靜態託管 Static Website Hosting
https://s3-us-west-2.amazonaws.com/test/test.txt

開啟靜態託管 Static Website Hosting
https://test.s3-website-us-west-2.amazonaws.com/test.txt

通常目錄都不會開 list 權限,所以只連目錄沒指定檔案名稱的話會是 Access Denied


查看支援指令說明
aws s3 help

  • cp (複製檔案)
  • ls  (列出檔案)
  • mb (建立 bucket)
  • mv (搬移檔案)
  • rb  (刪除bucket)
  • rm (刪除檔案)
  • sync (本地端與bucket或是bucket與bucket之間同步)
  • website (bucket用作網站的設定)



檢查儲存桶資料
aws s3 ls s3://test

上傳資料並且開啟任何人分享
aws s3 cp test.txt s3://test --acl public-read

刪除檔案
aws s3 rm s3://test/test.txt


延伸閱讀

Zeroplex 生活隨筆
http://blog.zeroplex.tw/2014/04/aws-s3.html

瓶中封裝的那些時光
http://tiab.brecht.im/using-s3-upload-files-from-bash/

Website Hosting 的差異性
https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/WebsiteEndpoints.html




本帖由dc最後編輯於2016-04-26 10:03

Your mind to my mind,

your thought to my thought
發表時間:2016-03-11 10:21
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:123.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 2 篇) 【原創】二。開啟第二張網卡與AZ互通

主要是因為 EC2 eth0 的 Private IP 是用來 NAT Public IP 使用,為了要分出內網與外網的流量所以必須增加 eth1 來分別記錄。

文件都說同一個 VPC 或是同一個 AZ 內網都是相通的,但是新增第二張網卡後會遇到一些問題所以來做一下筆記。

需要注意一點同一台 實例(Instances) 如果綁了兩張網卡,如果之前有綁定 彈性IP(Elastic IPs) 的話當取消 彈性IP 時會拿不到分配的 Public IP,必須分離(Deatch) 第二張網卡才能取得自動分配的 Public IP 。
或是 VPC 子網(Subnet) 裡的 修改自動分配公有IP(Modify Auto-Assign Public IP) 裡不要開 啟預自動分配公有IP(Enable auto-assign Public IP)。

假設我們的 實例(Instances) VM 分別在 可用區(Availability Zone) 中的 us-west-2a 與 us-west-2b


  • 1.VPC 創建子網 (Create Subnet)

    給 us-west-2a 使用的
    Name tag : eth1a
    VPC : 選你的VPC
    Availability Zone : us-west-2a
    CIDR block : 172.31.50.0/27 範例照你自己的需求

    給 us-west-2b 使用的
    Name tag : eth1b
    VPC : 選你的VPC
    Availability Zone : us-west-2b
    CIDR block : 172.31.50.32/27 範例照你自己的需求


  • 2.VPC 創建安全組 (Create Security Group)
    Name tag : eth1
    Group name : eth1
    Description : eth1
    VPC : 選你的VPC

    Edit 入站規則(Inbound Rules) 與 出站規則(Outbound Rules)
    所有流量(ALL Traffic)
    Source 選擇剛剛建立的 eth1 Group ID
    只允許該網卡互通


  • 3.EC2 網路接口(Network Interfaces) 建立與綁定網卡
    創建網路接口(Create Network Interfaces)
    Subnet : 分 us-west-2a 與 us-west-2b 來建立
    Private IP : 可以留空自動分配
    Security groups : 選擇剛剛建立的 eth1

    將剛剛建立 狀態(Status) 為 available 的 網路接口(Network Interfaces) 上按右鍵 附加 (Attach) 到同一可用區(Availability Zone) 的 實例(Instance ID)


  • 4.網卡(Interfaces) 細部設定
    需登入 VM 裡依 Linux 為範例

    Attach Network Interfaces 前與 Attach Network Interfaces 後使用

    ifconfig -a

    可以看出多了 eth1 的網卡,這時候先設定預設的 GATEWAY 上去,不然啟動 eth1 時就連不進來只能拔掉 eth1 然後重新開機了。

    vi /etc/sysconfig/network
    GATEWAYDEV=eth0

    增加 eth1 設定值

    vi /etc/sysconfig/network-scripts/ifcfg-eth1
    ONBOOT=yes
    DEVICE=eth1
    BOOTPROTO=dhcp

    在來是 eth1 route 的設定,讓走 eth1 的網路走 eth1 出去不要繞到 eth0 的 gateway 出去,不然還是一樣不通
    Availability Zone : us-west-2a CIDR block : 172.31.50.0/27 的 gateway 是 172.31.50.1
    Availability Zone : us-west-2b CIDR block : 172.31.50.32/27  的 gateway 是 172.31.50.33

    #if az  us-west-2a
    echo 172.31.50.0/24 via 172.31.50.1 dev eth1 > /etc/sysconfig/network-scripts/route-eth1
    cat /etc/sysconfig/network-scripts/route-eth1
    #if az us-west-2b
    echo 172.31.50.0/24 via 172.31.50.33 dev eth1 > /etc/sysconfig/network-scripts/route-eth1
    cat /etc/sysconfig/network-scripts/route-eth1

    ifup eth1


然後互 ping 或是 ssh us-west-2a 與 us-west-2b 互通~大功告成~收工~




本帖由dc最後編輯於2016-03-11 17:30

Your mind to my mind,

your thought to my thought
發表時間:2016-03-11 17:14
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:123.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 3 篇) 【原創】關於建立 VPC 的注意事項

在官網 VPC 的解釋如下

https://aws.amazon.com/tw/vpc/

Amazon Virtual Private Cloud (Amazon VPC) 允許您在 Amazon Web Services (AWS) 雲端佈建一個在邏輯上隔離的部分,並在自己定義的虛擬網路中啟動 AWS 資源。您可以完全掌控虛擬聯網環境,包括選擇自己的 IP 地址範圍、建立子網路,以及配置路由表和網路閘道。

您可以輕鬆自訂 Amazon Virtual Private Cloud 的網路配置。例如,您可以為可存取網路的 Web 伺服器建立公有子網路,而將資料庫或應用程式伺服器等後端系統放在不能存取網路的私有子網路中。您可以利用安全群組和網路存取控制清單等多種安全層,對各個子網路中 Amazon EC2 執行個體的存取進行控制。

所以在 AWS 上如果要區隔 開發環境 與 測試環境 我會建議建立不同的 VPC 來區隔~

但是自己建立的 VPC 因為設定值都要手動來所以需要注意一下,要添加 Internet Gateway 與路由才能連得上與配發公有 IP

Your VPCs -> Create VPC 建立完畢之後需要, Subnets -> Create Subnet 注意 Availability Zone 不同 AZ 建立不同網段,Internet Gateways -> Create Internet Gateway 創建完成後 右鍵 Attach to VPC 將對外的 Gateway 附加上去,Rouet Tables -> 選擇剛剛建立的 VPC 路由 -> Routes -> Edit -> Add another route -> 0.0.0.0/0 選剛剛建立的 Gateway -> Save

您的 VPC -> 創建 VPC 建立完畢之後需要, 子網 -> 創建子網 注意 可用區 不同 AZ 建立不同網段,Internet 網關 -> 創建 Internet 網關 創建完成後 右鍵 附加到 VPC 將對外的 Gateway 附加上去,路由表 -> 選擇剛剛建立的 VPC 路由 -> 路由 -> 編輯 -> 添加其他路由 -> 0.0.0.0/0 選剛剛建立的 Gateway -> 保存






Your mind to my mind,

your thought to my thought
發表時間:2016-10-12 15:58
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:118.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:6535
註冊時間:2002-05-07 16:32
(第 4 篇) 【原創】ElastiCache 手動備份排程

ElastiCache 雖然有自動備份的功能~但是不太靈活~因為我需要每六小時備份一次沒辦法這樣設定。

所以就使用 AWS CLI 來跑備份~

先上排程的 sh 在來解釋會寫 log 來記錄
代碼:

#定義參數
BACKUP="這裡填要備份的節點ID 也就是 Node Name 通常會使用 002 這一個"
BACKUPDAY=$(date +"%Y%m%d-%H%M%S")
BACKUPNAME=$BACKUP-$BACKUPDAY
BUCKET="這裡填放備份的儲存桶名稱 也就是 BUCKET"
RUNLOG="這裡填紀錄的 log 絕對路徑名稱與檔名"


echo "" >> $RUNLOG
echo "Backup Redis Start" $(date +"%Y%m%d %H:%M:%S") >> $RUNLOG
#echo $BACKUPNAME
echo "$BACKUPNAME" >> $RUNLOG
#echo "aws elasticache create-snapshot --cache-cluster-id" $BACKUP "--snapshot-name" $BACKUPNAME
echo "aws elasticache create-snapshot --cache-cluster-id" $BACKUP "--snapshot-name $BACKUPNAME" >> $RUNLOG
#執行快照備份作業
/usr/local/bin/aws elasticache create-snapshot --cache-cluster-id $BACKUP --snapshot-name $BACKUPNAME
#每 90 秒檢查是否備份完成,完成後在進行下一步
createtype=`/usr/local/bin/aws elasticache describe-snapshots --snapshot-name $BACKUPNAME --output text | awk '{print $17}'`
#echo $createtype
until [ "$createtype" = "available"  ]
do
createtype=`/usr/local/bin/aws elasticache describe-snapshots --snapshot-name $BACKUPNAME --output text | awk '{print $17}'`
#echo $createtype
echo $createtype  >> $RUNLOG
sleep 90s
done


sleep 30s
#echo "Create Status Available, Next..." $(date +"%Y%m%d %H:%M:%S")
echo "Create Status Available, Next Copy Snapshot To S3" $(date +"%Y%m%d %H:%M:%S") >> $RUNLOG
#echo "/usr/local/bin/aws elasticache copy-snapshot --source-snapshot-name" $BACKUPNAME "--target-snapshot-name" $BACKUPNAME "--target-bucket" $BUCKET
echo "/usr/local/bin/aws elasticache copy-snapshot --source-snapshot-name" $BACKUPNAME "--target-snapshot-name" $BACKUPNAME "--target-bucket" $BUCKET >> $RUNLOG
#將備份的檔案複製到 S3 的儲存桶 BUCKET
/usr/local/bin/aws elasticache copy-snapshot --source-snapshot-name $BACKUPNAME --target-snapshot-name $BACKUPNAME --target-bucket $BUCKET

#複製完後要等到狀態變成 available 才能往下進行刪除
waittype=`/usr/local/bin/aws elasticache describe-snapshots --snapshot-name $BACKUPNAME --output text | awk '{print $17}'`
#echo $waittype
until [ "$waittype" = "available"  ]
do
waittype=`/usr/local/bin/aws elasticache describe-snapshots --snapshot-name $BACKUPNAME --output text | awk '{print $17}'`
#echo $waittype
echo $waittype  >> $RUNLOG
sleep 60s
done

sleep 30s
echo "Delete Snapshot" $BACKUPNAME $(date +"%Y%m%d %H:%M:%S") >> $RUNLOG
echo "/usr/local/bin/aws elasticache delete-snapshot --snapshot-name" $BACKUPNAME >> $RUNLOG
#刪除已經備份到 S3 儲存桶的快照備份
/usr/local/bin/aws elasticache delete-snapshot --snapshot-name $BACKUPNAME

echo "Backup Redis Over" $(date +"%Y%m%d %H:%M:%S") >> $RUNLOG


log 內容
代碼:

Backup Redis Start 20180209 06:00:01
這裡會顯示NodeName-20180209-060001
aws elasticache create-snapshot --cache-cluster-id 這裡會顯示NodeName --snapshot-name 這裡會顯示NodeName-20180209-060001
creating
creating
creating
creating
creating
creating
creating
creating
creating
creating
creating
creating
creating
creating
creating
available
Create Status Available, Next Copy Snapshot To S3 20180209 06:24:49
/usr/local/bin/aws elasticache copy-snapshot --source-snapshot-name 這裡會顯示NodeName-20180209-060001 --target-snapshot-name 這裡會顯示NodeName-20180209-060001 --target-bucket 這裡會顯示儲存桶名稱也就是BUCKET
exporting
available
Delete Snapshot 這裡會顯示NodeName-20180209-060001 20180209 06:27:24
/usr/local/bin/aws elasticache delete-snapshot --snapshot-name 這裡會顯示NodeName-20180209-060001
Backup Redis Over 20180209 06:27:25


整個備份的流程為

  • 先建立備份
    aws elasticache create-snapshot --cache-cluster-id 這裡會顯示NodeName --snapshot-name 這裡會顯示NodeName-20180209-060001
  • 確認備份狀態後進行備份到 S3
    aws elasticache describe-snapshots --snapshot-name 這裡會顯示NodeName-20180209-060001 | grep "SnapshotStatus"
                "SnapshotStatus": "creating",  變成  "SnapshotStatus": "available",
  • 在備份到 s3
    aws elasticache copy-snapshot --source-snapshot-name 這裡會顯示NodeName-20180209-060001 --target-snapshot-name 這裡會顯示NodeName-20180209-060001 --target-bucket  這裡會顯示儲存桶名稱也就是BUCKET
  • 確認複製狀態後刪除備份
    aws elasticache describe-snapshots --snapshot-name 這裡會顯示NodeName-20180209-060001 | grep "SnapshotStatus"
                "SnapshotStatus": "exporting",  變成  "SnapshotStatus": "available",
  • 刪除備份
    aws elasticache delete-snapshot --snapshot-name 這這裡會顯示NodeName-20180209-060001


ElastiCache-backup 需要增加 IAM 的策略權限為
               "elasticache:CopySnapshot",
                "elasticache:CreateSnapshot",
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:DeleteObject",
                "s3:GetBucketAcl",
                "s3:PutObject",
                "elasticache:DescribeSnapshots",
                "elasticache:DeleteSnapshot"

儲存桶 BUCKET 需要增加該使用者
540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353
會被辨識為 aws-scs-s3-readonly
權限需要開啟
列出對象
寫入對象
讀取存儲桶權限



官方說明

进行手动备份
除了自动备份以外,您还可以随时创建手动 备份。与在指定保留期之后自动删除的自动备份不同,手动备份并没有在超过之后就会自动删除的保留期。您必须手动删除任何手动备份。即使您删除某个集群或节点,该集群或节点的所有手动备份都会保留。如果您不再需要保留某个手动备份,您必须自行显式删除它。
https://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/UserGuide/backups-manual.html
示例 2:备份有副本节点的 Redis (已禁用集群模式) 群集
以下 AWS CLI 操作从带有一个或多个只读副本的 Redis (已禁用集群模式) 集群 myNonClusteredRedis 创建备份 bkup-20150515。
对于 Linux, macOS, or Unix:
aws elasticache create-snapshot  --cache-cluster-id myNonClusteredRedis-001 --snapshot-name bkup-20150515

描述备份
以下过程演示如何显示备份列表。如果需要,您还可以查看特定备份的详细信息。
https://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/UserGuide/backups-describing.html
以下操作使用参数 --snapshot-name 显示备份 my-backup 的详细信息。
aws elasticache describe-snapshots --snapshot-name my-backup

导出 ElastiCache 备份 (AWS CLI)
Amazon ElastiCache 支持将您的 ElastiCache 备份导出到 Amazon Simple Storage Service (Amazon S3) 存储桶,这让您可以从 ElastiCache 之外访问它。您可以使用 ElastiCache 控制台、AWS CLI 或 ElastiCache API 导出备份。
https://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/UserGuide/backups-exporting.html#Snapshots.Exporting.CLI
使用带有以下参数的 copy-snapshot CLI 操作将备份导出到 Amazon S3 存储桶:
参数
--source-snapshot-name - 要复制的备份的名称。
--target-snapshot-name - 备份副本的名称。
名称必须在 1 到 1000 个字符之间,并能够以 UTF-8 编码。
ElastiCache 对您在此处输入的值添加实例标识符和 .rdb。例如,如果您输入 my-exported-backup,则 ElastiCache 创建 my-exported-backup-0001.rdb。
--target-bucket - 您要将备份导出到的 Amazon S3 存储桶的名称。在指定存储桶中生成备份的副本。
--target-bucket 必须是备份所在区域内的 Amazon S3 存储桶并具有以下权限,导出过程才能成功。
对象访问 – Read 和 Write。
权限访问 – Read。
有关更多信息,请参阅 步骤 2:将对 ElastiCache 的访问权限授予您的 Amazon S3 存储桶。
以下操作将备份复制到 my-s3-bucket。
对于 Linux, macOS, or Unix:
aws elasticache copy-snapshot  --source-snapshot-name automatic.my-redis-primary-2016-06-27-03-15  --target-snapshot-name my-exported-backup  --target-bucket my-s3-bucket

(AWS CLI) 删除备份
https://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/UserGuide/backups-deleting.html
使用带以下参数的 delete-snapshot AWS CLI 操作删除备份。
--snapshot-name - 要删除的备份的名称。
以下代码删除备份 myBackup。
aws elasticache delete-snapshot --snapshot-name myBackup






Your mind to my mind,

your thought to my thought
發表時間:2018-02-09 11:44
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:203.*.*.* 編輯  引言回覆 
所有時間均為GMT+8, 現在是2018-02-21 10:53    
訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆

快速回覆
主題 ( 回覆文章可以不輸入標題 )
URLs自動分析
有回覆時郵件通知
禁用表情符號
使用簽名

<聯絡我們 - OMEGA - 控制面板>

Powered by Centaur & Joksky & DC, ver 2003.08.14
Copyright ©2002-2008 PHPY.COM


頁面生成時間:0.010666131973267