Amazon SimpleDB 操作 (Java)

08 April 2012

SimpleDB 是Amazon提供的一種NoSQL DATABASE!
詳細說明去官網看吧!


這篇主要會教大家如何
建立一張table,
新增資料
刪除資料
查詢資料


首先要先宣告一些必備的參數,
// 你的table name(在Relational Database叫做table,這裡叫做domain)
final String DOMAIN_NAME = "member";

// 取得憑證,這檔案預設在/src底下
AWSCredentials credentials = new PropertiesCredentials(getClass().getClassLoader().getResourceAsStream("AwsCredentials.properties"));

// 宣告一個SimpleDB
AmazonSimpleDB sdb = new AmazonSimpleDBClient(credentials);


接著就建立一個table,
// 建立一個table(在Relational Database叫做table,這裡叫做domain)
sdb.createDomain(new CreateDomainRequest(DOMAIN_NAME));


在SimpleDB的新增分成兩種方式!
一種是一筆一筆的新增,
另一種是批次的新增!(一次新增多筆)
有玩過GAE的大概知道,其實GAE也是這樣!
多筆的話就是用一個list存放資料!

在這邊先介紹一次新增多筆的!
// 先宣告一個List,List擺放的型態為ReplaceableItem,這型態意思是如果table裡面已經有一筆Ken的資料,那麼就取代掉那筆,不會多一筆
List<ReplaceableItem> listAddData = new ArrayList<ReplaceableItem>();


// 第一筆資料
// 先new一個Item,Item Name是Ken,然後這個item有四個attribute!分別是Sex, Tel, Mail, Nickname
listAddData.add(new ReplaceableItem("Ken").withAttributes(
new ReplaceableAttribute("Sex", "boy", true),
new ReplaceableAttribute("Tel", "09123456", true),
new ReplaceableAttribute("Mail", "xxx@kenyang.net", true),
new ReplaceableAttribute("Nickname", "KenYang", true)));

// 第二筆
listAddData.add(new ReplaceableItem("Sam").withAttributes(
new ReplaceableAttribute("Sex", "boy", true),
new ReplaceableAttribute("Tel", "09123456", true),
new ReplaceableAttribute("Mail", "xxx@kenyang.net", true),
new ReplaceableAttribute("Nickname", "SamYang", true)));


// 接著就新增吧!記得要指定Domain name!
sdb.batchPutAttributes(new BatchPutAttributesRequest(DOMAIN_NAME, listAddData));




接著要介紹新增一筆的! 其實大同小異,只是要宣告一個PutAttributesRequest來擺放資料!
一個PutAttributeRequest就代表一筆資料!
PutAttributesRequest dataAttribute = new PutAttributesRequest().withDomainName(DOMAIN_NAME).withItemName("John"); 

dataAttribute.getAttributes().add(
new ReplaceableAttribute()
.withName("Sex")
.withValue("girl")
.withReplace(true));

dataAttribute.getAttributes().add(
new ReplaceableAttribute()
.withName("Tel")
.withValue("0987123")
.withReplace(true));

dataAttribute.getAttributes().add(
new ReplaceableAttribute()
.withName("Mail")
.withValue("xxx@gmail.com")
.withReplace(true));

dataAttribute.getAttributes().add(
new ReplaceableAttribute()
.withName("Nickname")
.withValue("JohnYang")
.withReplace(true));

sdb.putAttributes(dataAttribute);




接下來要介紹刪除! 這邊是介紹一次刪除多筆的!
一樣是用一個List去存放要刪除的Item Name!
至於刪除單筆,也跟上述方法一樣! 這裡就不多作介紹!
List<DeletableItem> listDeleteData = new ArrayList<DeletableItem>();
listDeleteData.add(new DeletableItem().withName("Ken"));
listDeleteData.add(new DeletableItem().withName("Sam"));
// 所以Ken和Sam這兩筆資料會被刪除
sdb.batchDeleteAttributes(new BatchDeleteAttributesRequest(DOMAIN_NAME,listDeleteData));



最後要介紹查詢了!
// 注意,傳統的SQL指令,都是用單引號('),但是這裡要用(`)
String selectExpression = "select * from `" + DOMAIN_NAME + "` ";
SelectRequest selectRequest = new SelectRequest(selectExpression);
SelectResult sr = sdb.select(selectRequest);

for (Item item : sr.getItems()) {
response.getWriter().println(item.getName());
response.getWriter().println(item.getAttributes().get(0).getValue());
}






read more »


Amazon ElasticBeanstalk Health Check URL

07 April 2012

今天Deploy上去ElasticBeanstalk 以後...
一直發生error!
status一直是紅燈!
連都不能連....
查了一下!
原來Amazon會去check我的首頁!
如果首頁有出現任何error,那麼我的service就會被中斷連不上去!
剛好我今天首頁有error code.. 所以就被中斷連不上去!

更正以後就沒事了!




























read more »


用SSH免key連線至Amazon EC2

06 April 2012


有用過EC2的應該都知道,
一定要有key才能使用SSH連線!
就算你有帳號, 密碼都會被拒絕連線!

這篇要教大家不用使用key!
直接輸入帳號、密碼就可以登入!


首先先使用SSH連線至EC2上去,
如果不知道怎麼連線的,可以去我上一篇教學看!
連線以後,建立一個新的使用者!
指令如下:
sudo adduser kenyang

輸入完,會要你輸入密碼以及一些相關資訊!
接著如果你想要讓kenyang這個帳號也可以使用sudo的話!
就要輸入下列指令
sudo visudo
接著,就去修改裡面的設定檔案,
請加入下列指令,
kenyang ALL=(ALL) ALL
儲存以後就離開!

然後接著就是要設定ssh可以使用帳密登入了!
請先使用vim開啟設定檔案!
指令如下:
sudo vim /etc/ssh/sshd_config
打開以後,找到下圖中的那一行!(PasswordAuthentication)
將它改成yes!
接著儲存離開!

然後就重開ssh,指令如下:
sudo /etc/init.d/ssh restart


完成以後,你就能使用帳號、密碼登入了!
不用每次都要附上Key這麼麻煩!!!











read more »