2016-03-22 18 views
0

我剛開始使用AWS,我有一些問題。是否正在使用AWS SDK來啓動實例和aws cli來管理它是一種好方法?

首先,我跟着就如何啓動使用AWS SDK的實例JAVA這樣的官方文檔:

AmazonEC2 Client = new AmazonEC2Client(awsCreds); 
    CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); 
    csgr.withGroupName("Azzouz_group").withDescription("My security group"); 
    IpPermission ipPermission = new IpPermission(); 
    ipPermission.withIpRanges("0.0.0.0/0").withIpProtocol("tcp"); 
    AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest(); 

    authorizeSecurityGroupIngressRequest.withGroupName("Azzouz_group").withIpPermissions(ipPermission); 


    RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); 

    runInstancesRequest.withImageId("ami-4b814f22") 
      .withInstanceType("m1.small") 
      .withMinCount(1) 
      .withMaxCount(1) 
      .withKeyName("azzouz_key") 
      .withSecurityGroups("Azzouz_group"); 

    RunInstancesResult runInstancesResult = Client.runInstances(runInstancesRequest); 
    RunInstancesResult runInstancesResult = Client.runInstances(runInstancesRequest); 

    String instanceId = runInstancesResult.getReservation().getInstances().get(0).getInstanceId(); 

,因爲我要上傳我的公鑰亞馬遜我沒有使用CreateKeyPairRequest部分所以,當我試圖進入ssh進入我沒有添加-i path/to/key.pem,我只有在我的Java代碼("azzouz_key")提鍵值名,在接下來的線條,$USER包含azzouz_key

keypair=$USER # just a name 
publickeyfile=$HOME/.ssh/id_rsa.pub 
regions=$(aws ec2 describe-regions \ 
    --output text \ 
    --query 'Regions[*].RegionName') 

for region in $regions; do 
    echo $region 
    aws ec2 import-key-pair \ 
    --region "$region" \ 
    --key-name "$keypair" \ 
    --public-key-material "file://$publickeyfile" 
done 

我現在想要的是連接到實例並自動化一些東西。所以我打算從java代碼中調用一個shell,腳本獲取一個實例id作爲參數,然後獲取ip地址(使用aws ec2 describe-instances),ssh進入並執行一些操作。

我想授權從任何IP的實例ssh連接作爲一個開始(0.0.0.0/0),我不知道這是我應該做的。

所以,我的問題是:這是最好的辦法?!我應該使用aws cli來創建和管理實例嗎?!是否只提及密鑰對名稱適合於將公共密鑰上傳到亞馬遜的機制?

請問,我剛剛開始,我是實習生,我還沒有訪問亞馬遜帳戶,所以我可以測試我的工作。我只是想着這一切。非常感謝你!

回答

2

我的建議是在AWS上設置一個帳戶並開始使用AWS免費套餐選項。總之,它在那裏,它是免費的(只需注意你在服務中啓動或使用的內容)。

除了這一點,你如何從任何地方通過SSH連接授權的問題,這是在安全組(http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

關於什麼是最好的選項來完成的,這真的取決於你。

如果您需要在您的AWS上啓動2個實例,那麼控制檯就足夠了。如果你想協調你的混合設置,那麼你的方式可能是最好的。

CLI也是日常操作的絕佳解決方案。

簡而言之,沒有最好的方法或好或壞的方法。這一切都取決於你的需求。

我希望這有助於某種方式。

+0

非常感謝Maurizio。關於免費級帳戶,它需要一張信用卡,在我的國家我們沒有這種卡。這就是問題,所以我在等待我的老闆下週給我一個訪問權限。 –

+0

對不起,遺憾的是沒有信用卡在AWS上沒有任何派對。 有沒有辦法在你的國家獲得虛擬信用卡? –

+0

我正在努力。非常感謝你! –

0

自動化是一個巨大的話題。如果您想要使用腳本來擴展AWS自動化,在觸摸API/SDK之前,首先您必須設計自己的AWS資源標籤命名。

標記命名是隱含的方式來引用AWS資源,而無需明確指定資源ID(例如,VPC ID,EC2-ID,接口ID等)。另外,對於不允許在創建期間立即使用標籤的EC2等資源,您需要研究「客戶令牌」的用法。

AWS CLI允許您執行大量自動操作,但是,爲了操縱響應結果,您需要使用shell腳本技巧來操作它們。我建議您選擇您熟悉的AWS SDK語言。

如果您計劃擴展整個源部署,服務器配置,雲配置管理工具(Ansible,saltstack,puppet等工具提供的有限支持)可以成爲下一步。

相關問題