我剛開始使用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來創建和管理實例嗎?!是否只提及密鑰對名稱適合於將公共密鑰上傳到亞馬遜的機制?
請問,我剛剛開始,我是實習生,我還沒有訪問亞馬遜帳戶,所以我可以測試我的工作。我只是想着這一切。非常感謝你!
非常感謝Maurizio。關於免費級帳戶,它需要一張信用卡,在我的國家我們沒有這種卡。這就是問題,所以我在等待我的老闆下週給我一個訪問權限。 –
對不起,遺憾的是沒有信用卡在AWS上沒有任何派對。 有沒有辦法在你的國家獲得虛擬信用卡? –
我正在努力。非常感謝你! –