amazon aws 使用笔记

一、首先,几个概念1、AMIAn Amazon Machine Image (AMI) is an encrypted machine image that contains all information necessary to boot instances of your software.use public AMIs as a base to create your own custom private AMIs.可以理解为系统的一个模板。你可以基于这个模板启动多个系统实例,或者修改这个模板,做为自己的模板。

AMI有官方的和第三方的,现在官方的linux支持ubuntu和fedora。系统有64位和32位的。下面有一部分是专门说明AMI的选择的。也可以从下面的地址中查找自己需要的AMI,这里提供的一般是第三方的AMI。http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=171

2、InstancesAfter an AMI is launched, the resulting running system is called an instance。AMI启动以后就叫做Instance了。

3、Instance StoreThe instance store refers to the disk storage associated with an instance. In the event an instance fails or is terminated, all content on 

the instance store is deleted.Instance基本硬件配置是是:Xen VM,2G CPU,1.7G RAM,文件系统Ext3: 10G /(镜像持久), 140G /mnt(每次重启被清空)Instance不负责持续存储,Instance失败和停止后,所有存储在Instace内的内容都会消失。如果需要持续的存储,就需要使用EBS,详细说明在下面。

4、EBSAmazon Elastic Block Store (Amazon EBS)Amazon Elastic Block Store (Amazon EBS) is a new type of storage designed specifically for Amazon EC2 instances. Amazon EBS allows you to 

create volumes that can be mounted as devices by Amazon EC2 instances. Amazon EBS volumes behave like raw unformatted external block devices为ec2的instance生命周期提供持续的存储,并在后台自动复制,可以提供基于时间点的快照,并存储到S3中。这个快照可以用于一个新的instance。同一时间,一个vol在同一时间只能挂载在一个Instance上。注意:在建立volume时,要选择和Instance相同的 Availability Zone内,否则不能挂载。

5、关于EC2_PRIVATE_KEY和EC2_CERT在Home > Your Account > Access Identifiers > X.509 Certificate 中点击创建一个新的key时会出现下面的界面,允许你下载你的cert和pk。如果这个key不是你创建的,我现在不知道什么地方可以下载private key,还是重新创建一个吧~~~

6、关于Elastic IP每个账户限制有5个EIP,可以申请多于5个的IP:http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1346

上面的文章中有详细的说明,具体的申请页面http://www.amazon.com/gp/html-forms-controller/eip_limit_request

7、有关rightscale的AMIrightscale 是我认为比较好的第三方AMI提供者。提供cetos的AMI。关于AMI的选择:对yurightscale的AMI的命名规则,如下图的V1_10,v4_0_1,是centos5的1版本和4版本,我当时不清楚,选择的是一版本,后来用了一段时间发现rightscale的验证失败。同时发现v4版本使用的KID是9b00e5f2,而这个AKI是amazon提供的2.6.18的内核。所以,在选择rightscale的AMI时,在确定了平台和系统版本后,选择AMI版本较高的AMI。

我是在这个AMI上构建自己的AMI的: ami-08f41161rightscale_images/CentOS5V1_10.img.manifest.xml。有兴趣的话可以试试。后记:ami-08f41161使用的是2.6.16的内核,ami-0913f760使用的是2.6.18的内核。关于如何查看某个public 的AMI是使用的哪个内核,可以在console里选择显示AKI,其中AKI-9b00e5f2是2.6.18的32位版内核。AKI-9b00e5f1是64位。

关于添加内核模块到AMI中,查看我的另一篇文章:

关于rightscale的AMI ami-08f41161 :该AMI会启动一个rightscale的服务,每次instance启动时会做一些操作,详细见/var/log/install。因为发现有时该服务会失败,造成/etc/rc.d/rc.local里的启动项不能正常运行,所以我把rightscale服务去掉了。为什么启动失败?日志中记录的是验证失败之类的错误,因为我使用的是rightscale的v1版本,后来使用了V4版本就不会有这样的问题,所以我猜测可能是旧版本的不再提供一些相关的服务了,所以验证失败,毕竟是免费的,如果是付费的可能就不会出现这样的问题了,管他呢,取消该服务吧。另外,如果取消该服务,记得删掉/etc/motd文件。

你也可以把正在使用的一个linux系统做成镜像,然后上传到S3上做为自己的AMI。方法在后面介绍。

二、使用一个第三方的AMI需要做的一些操作。

1、Disable Password-Based Logins for Rootto disable password-based logins for root,Open the /etc/ssh/sshd_config file with a text editor and locate the following line:

#PermitRootLogin yesChange the line to:PermitRootLogin without-password

To randomize the root password, add the following to your boot process:if [ -f "/root/firstrun" ] ; then  dd if=/dev/urandom count=50|md5sum|passwd --stdin root  rm -f /root/firstrunelse  echo "* Firstrun *" && touch /root/firstrunfi

2、检查是否有异常的服务3、检查是否有异常的系统用户4、检查是否有异常的crontab

三、定制自己的AMI1、以amazon上的AMI为基础创建:(1)选择一个AMI,启动一个Instance

(2)安装jdk1.5

(3)安装rubyyum install ruby

(4)安装ami-tools下载:http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368安装:rpm -i ec2-ami-tools-x.x-xxxx.i386.rpm

(5)上传private key和cert

(6)打包现在的系统ec2-bundle-vol  -k /opt/ec2/pk-6FW5MJGDE7EHO9WFDZVOTDNHBMM5MRPA.pem -c /opt/ec2/cert-6FW5MJGDE7EHO9WFDZVOTDNHBMM5MRPA.pem  -u 911139294232 --debug说明:-u是你的账号去掉“-”执行到一半时会umount /mnt/img-mnt,确保没有程序在使用该目录。常见的,查看是否有终端登在该目录中。

打包好的文件存储在/tmp中

(7)上传打包好的系统到S3上cd /tmp命令:ec2-upload-bundle -b <bucket-name> -m image.manifest.xml -a <access_key> -s <secret_key> 如:ec2-upload-bundle -b wamo-uranus -m image.manifest.xml -a 1DQ7TN5665Z7TVDNN687 -s jUop8Yv8Ze6J0xi9qNrI+UbIbPKYrZQFt0pn6Va说明:bucket:在S3上的一个存储目录。这个bucket name需要保证全局唯一性。

(8)注册这个AMITo launch the AMI, you must register it. For more information, see ec2-register http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/index.html?CLTRG-register.html如:ec2-register wamo-uranus/image.manifest.xml

2、从vmware创建一个AMIhttp://blog.chinaunix.net/u/32831/showart_1839873.html另外,kernel需要是xen的内核:The current hardware does NOT support hardware virtualization, so you need to build for Xen。In general, building for Xen, even on virtualizing hardware, can improve performance. 

更多,可以查看我的另一篇文章:http://blog.chinaunix.net/u/32831/showart_1886169.html

注:从本地上传做好的image到s3上时只需要上传 image.part.00 到 image.part.98和image.manifest.xml文件即可,大概1G左右,最大的那个3G左右的image文件不需要上传。

注:我按照上面的方法做了一个AMI,启动时出现了错误FATAL: Could not load /lib/modules/2.6.16-xenU/modules.dep: No such file or directory 。

原因,查看下面的文章:http://developer.amazonwebservices.com/connect/message.jspa?messageID=112316

四、开始使用Instance1、使用secucrt连接到instance使用putty的话可以查看官方文档,我习惯使用secucrt,但是官方没有提供将amazon的key转换成secucrt的文档。下面的内容摘自论坛:原理:使用openssh ssh-keygen将.pem转换为openssh格式的key。(1)、上传gsg-keypair.pem到一台linux服务器上(2)、cat gsg-keypair.pem>amazonec2key(3)、chmod 600 amazonec2key(4)、ssh-keygen -p -f amazonec2key(5)、ssh-keygen -e -f amazonec2key >> amazonec2key.pub(6)、使用amazonec2key.pub做为secuCRT的key文件。

2、使用ec2-api(1)设置环境变量export JAVA_HOME=/usr/java/jdk1.5.0_15export EC2_HOME=/opt/ec2/ec2-api-tools-1.3-30349export EC2_PRIVATE_KEY=/opt/ec2/pk-6FW5MJGDE7EHO6WFDZVOTDNHBMM5MRPA.pemexport EC2_CERT=/opt/ec2/cert-6FW5MJGDE7EHO6WFDZVOTDNHBMM5MRPA.pemPATH=$PATH:$EC2_HOME/bin:$JAVA_HOME/bin(2)使用,ec2-api提供对aws的操作,如启动实例,挂载EBS存储,等等,等等~~~好多PROMPT> ec2-describe-regionsREGION        us-east-1        us-east-1.ec2.amazonaws.comREGION        eu-west-1        eu-west-1.ec2.amazonaws.com(3)关于下面的报错一般是由于jdk的版本造成的,建议使用jdk1.5.另外,还有可能是CLASSPATH里包含了某些jar包造成的,建议先取消环境变量CLASSPATH试一下:unset CLASSPATH

org.codehaus.xfire.fault.XFireFault: Signature creation failed; nested exception is:         java.lang.NullPointerException        at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)        at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)        at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)        at org.codehaus.xfire.client.Client.invoke(Client.java:336)        at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)        at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)        at $Proxy12.describeAddresses(Unknown Source)        at com.amazon.aes.webservices.client.Jec2.describeAddresses(Jec2.java:1645)        at com.amazon.aes.webservices.client.Jec2.describeAddresses(Jec2.java:1616)        at com.amazon.aes.webservices.client.cmd.DescribeAddresses.invokeOnline(DescribeAddresses.java:42)        at com.amazon.aes.webservices.client.cmd.BaseCmd.invoke(BaseCmd.java:637)        at com.amazon.aes.webservices.client.cmd.DescribeAddresses.main(DescribeAddresses.java:51)Caused by: org.apache.ws.security.WSSecurityException: Signature creation failed; nested exception is:         java.lang.NullPointerException        at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:666)        at com.amazon.aes.webservices.client.Jec2.signRequest(Jec2.java:258)        at com.amazon.aes.webservices.client.Jec2.access$000(Jec2.java:70)        at com.amazon.aes.webservices.client.Jec2$1.invoke(Jec2.java:152)        at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)        at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)        ... 10 moreCaused by: java.lang.NullPointerException        at org.apache.crimson.tree.ElementNode2.getAttributeNodeNS(ElementNode2.java:432)        at org.apache.crimson.tree.ElementNode2.hasAttributeNS(ElementNode2.java:388)        at org.apache.ws.security.util.WSSecurityUtil.findElementById(WSSecurityUtil.java:269)        at org.apache.ws.security.util.WSSecurityUtil.getElementByWsuId(WSSecurityUtil.java:438)        at org.apache.ws.security.message.EnvelopeIdResolver.engineResolve(EnvelopeIdResolver.java:117)        at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(Unknown Source)        at org.apache.xml.security.signature.Reference.getContentsBeforeTransformation(Unknown Source)        at org.apache.xml.security.signature.Reference.dereferenceURIandPerformTransforms(Unknown Source)        at org.apache.xml.security.signature.Reference.calculateDigest(Unknown Source)        at org.apache.xml.security.signature.Reference.generateDigestValue(Unknown Source)        at org.apache.xml.security.signature.Manifest.generateDigestValues(Unknown Source)        at org.apache.xml.security.signature.XMLSignature.sign(Unknown Source)        at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:659)        ... 15 more

关于启动了的Instance的相关信息,可以通过下面的工具查看wget http://s3.amazonaws.com/ec2metadata/ec2-metadata

chmod u+x ec2-metadata./ec2-metadata或者查看EC2 Developer Guide > Using Amazon EC2 >Launching and Using Instances >Instance Metadata

3、关于挂载EBS存储(1)创建一个存储,大小的单位是G,可以使用--snapshot充一个快照进行创建。ec2-create-volume --size 1 --availability-zone us-east-1c (2)挂载一个vol到一个Instanceec2-attach-volume VOLUME -i INSTANCE -d DEVICE如:ec2-attach-volume vol-0553b76c -i i-9743d7fe -d /dev/sdh注意,不要挂载到/dev/sd3上去,/dev/sd3是swap分区。登陆到linux上        mkfs.ext3 /dev/sdhmount /dev/sdh /mnt/data-store(3)卸载存储首先,从linux卸掉挂载 umount /mnt/data-store卸载存储:ec2detvol [GENERAL OPTIONS] VOLUME [-i INSTANCE [-d DEVICE]] [-f|--force]ec2-detach-volume vol-0553b76c -i i-fd33a694 -d /dev/sdh 

4、关于操作S3上的bucket常用于删除修改后删除以前的AMI需要使用工具:s3cmd工具,第三方的。下载地址:http://s3tools.org/s3cmd安装:(1)先安装windows的python      (2)右击“我的电脑”->“属性”->“高级”->“环境变量”,选择“PATH”,点“编辑”,把;C:\Python26加入“变量值”中(注意分号分割)。确定      (3)运行python setup.py install      (4)运行python c:\python26\scripts\s3cmd --configure  设定 access_key和secret_key      (5)关于删除bucket,s3cmd 0.9.9 以前的版本不支持删除非空bucket,建议使用s3cmd 0.9.9 版本。Many people wanted an easy way to delete a subtrees from S3 or to remove non-empty buckets. Both is now possible – del understands 

—recursive and rb honours —force (which in fact will do a recursive delete first internally):~$ python c:\python26\scripts\s3cmd rb --force s3://bkt-testWARNING: Bucket is not empty. Removing all the objects from it        first. This may take some time...File s3://bkt-test/testfile.txt deletedBucket 's3://bkt-test/' removed     (6)其余操作:Make bucket     s3cmd mb s3://BUCKET Remove bucket     s3cmd rb s3://BUCKET List objects or buckets     s3cmd ls [s3://BUCKET[/PREFIX]] List all object in all buckets     s3cmd la Put file into bucket     s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX] Get file from bucket     s3cmd get s3://BUCKET/OBJECT LOCAL_FILE Delete file from bucket     s3cmd del s3://BUCKET/OBJECT Synchronize a directory tree to S3     s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DI

 Disk usage by buckets     s3cmd du [s3://BUCKET[/PREFIX]] Get various information about Buckets or Objects     s3cmd info s3://BUCKET[/OBJECT] Copy object     s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2] Move object     s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2] Modify Access control list for Bucket or Object     s3cmd setacl s3://BUCKET[/OBJECT] List CloudFront distribution points     s3cmd cflist Display CloudFront distribution point parameters     s3cmd cfinfo [cf://DIST_ID] Create CloudFront distribution point     s3cmd cfcreate s3://BUCKET Delete CloudFront distribution point     s3cmd cfdelete cf://DIST_ID Change CloudFront distribution point parameters     s3cmd cfmodify cf://DIST_ID

五、其他1、关于使用rightscale的ami时,远程连接到其他instance时的提示:Address 174.129.230.151 maps to ec2-174-129-230-151.compute-1.amazonaws.com, but this does not map back to the address - POSSIBLE BREAK-IN 

ATTEMPT!思路:ssh -v root@174.129.230.151解决:vi /etc/ssh/ssh_config GSSAPIAuthentication no

2、一个小脚本,启动时自动绑定ELASTIC IPwget http://s3.amazonaws.com/ec2metadata/ec2-metadata

#!/bin/sh

#set environment

unset CLASSPATH

export JAVA_HOME=/usr/java/jdk1.5.0_15

export EC2_HOME=/opt/ec2/ec2-api-tools-1.3-30349

export EC2_PRIVATE_KEY=/opt/ec2/pk-6FW5MJGDE7EHO6WFDZVOTDNHBMM9MRPA.pem

export EC2_CERT=/opt/ec2/cert-6FW5MJGDE7EHO6WFDZVOTDNHBMM9MRPA.pem

PATH=$PATH:$EC2_HOME/bin:$JAVA_HOME/bin

#get metadata

my_instance_id=`/opt/ec2-metadata |awk '/instance-id/ {print $2}'`

#about ELASTIC IP

ip=174.12.23.152

ip152_status=$(ec2-describe-addresses $ip|awk '{print $3}')

#main

if [ "$ip152_status" = "" ];then

ec2-associate-address $ip -i $my_instance_id

echo "`date +%y/%m/%d-%T`: associate-address $ip to \"this INSTANC\" "

else

ip152_associate=`ec2-describe-instances |grep "$ip"|awk '{print $2}'`

if [ "$ip152_associate" = "$my_instance_id" ];then

echo "`date +%y/%m/%d-%T`: IP $ip has associated to \"this INSTANCE\"".

else

echo "`date +%y/%m/%d-%T`: IP $ip has associated to INSTANCE: $ip152_associate,not this INSTANCE "

fi

fi

3、show下我的使用记录4.我使用下面的脚本在启动时获取另一台服务器的内部ip,并修改一些配置文件注意,这个脚本有点问题,什么问题?往下看。。。#!/bin/sh#for ipuranusip=`ssh  root@174.129.230.151  ifconfig |grep inet|grep -v "127.0.0.1"|awk '{print $2}'|awk -F: '{print $2}'`

echo $uranusiplocalip=`/opt/ec2-metadata -o|awk '{print $2}'`

时间: 2015-03-12
Tags: java, xml, nbsp

amazon aws 使用笔记的相关文章

云安全加密存储技术剖析之Amazon AWS

话说Amazon AWS上的储存系统能有多安全? 首先,弄清楚你所能得到的安全性之前,要先知道你想采用哪种储存模式.Amazon提供了三种不同的储存模式: 主机储存(Instance Storage) 这是当你在AWS上启动一个服务器的虚拟机时,所包含的储存装置.可以将它看成一般的C槽硬盘.它只提供给这个虚拟机使用,当虚拟机终止时也就不再存在.这类储存的安全性跟Amazon虚拟机本身是一样的. 原始区块储存(Raw block storage) 被称为弹性区块储存系统(Elastic Block

如何在Amazon AWS上设置一台Linux服务器

AWS(Amazon Web Services)是全球领先的云服务器提供商之一.你可以使用 AWS 平台在一分钟内设置完服务器.在 AWS 上,你可以微调服务器的许多技术细节,如 CPU 数量,内存和磁盘空间,磁盘类型(更快的 SSD 或者经典的 IDE)等.关于 AWS 最好的一点是,你只需要为你使用到的服务付费.在开始之前,AWS 提供了一个名为 "Free Tier" 的特殊帐户,你可以免费使用一年的 AWS 技术服务,但会有一些小限制,例如,你每个月使用服务器时长不能超过 75

Amazon AWS云管理平台技术内幕,互联网营销

云架构 是满足按需分配的服务而设计的软件架构. 云架构上构建服务流程是这样,基本的计算及基础设施只是在有需要时(例如处理一个用户请求)才分配出去,分配必要的资源上的需求(如计算服务器或存储),执行特定的工作,然后放弃不必要的资源. 在整个业务过程,云平台负责根据客户的需求(并发数,吞吐量,数据存储空间等)来弹性的分配资源,然后将不用的资源收回 .老蒋认为这个过程中提供整个计算及存储等基础设施管理,分配,回收等工作的就称为云管理平台. 云架构能解决大型数据处理的很多问题. 例如传统数据处理中很难使

Google 的云计算业务对Amazon AWS 的反击!

GAP是Google管理数据中心中用于WEB 应用程序的开发和托管的平台,2008发布第一个测试版本;亚马逊则在2007年推出AWS功能,但是经过几年的发展,AWS功能一跃成为了http://www.aliyun.com/zixun/aggregation/13423.html">云计算平台的主流,而Google的云计算业务则一直处于不温不火中. 首先可能因为两者的观念不一样的缘故,Google采用的是平台即服务的模式PaaS,而亚马逊是基础设施即服务的模式Iaas,两者差别很大,所以Go

Amazon aws,搜集一些有用的文档

公司准备将一些应用迁移到amazon的EC2上,最近学习相关的知识,以下是搜到的比较有用的资料,以后写出迁移的过程及注意事项. 1.首先 官方文档首页:http://aws.amazon.com/documentation/官方blog:http://aws.typepad.com/ 2.关于EC2的文档,非常详细,从建立账号到启动instance:Amazon Elastic Compute Cloud Getting Started Guide (API Version 2008-12-01

Aurora: 来自 Amazon 的高性能的企业级关系数据库,兼容 MySQL

近日,在美国召开的AWS re:Invent云计算大会上,Amazon高级副总裁安迪·杰西发布了企业级关系数据库Aurora.Aurora是一个面向Amazon RDS(关系数据库服务).兼容MySQL的数据库引擎,它结合了高端商用数据库的高速度和高可用性特性以及开源数据库的简洁和低成本.Aurora的性能可达MySQL数据库的五倍,且拥有可扩展性和安全性,但成本只是高端商用数据库的十分之一.Aurora具有自动拓展存储容量.自动复制数据.自动检测故障和恢复正常等功能.Aurora的架构如下图所

Amazon公司开辟AI新前线:云端

Amazon.com公司以往似乎并不像谷歌.微软.Facebook以及IBM那样在人工智能领域引人注目,但这一情况如今开始出现改观. Amazon公司首席执行官Jeff Bezos最近发布了年度股东信,并在信中表示他认为作为AI领域的一大分支,机器学习这种能够无需编程即可实现计算机学习的技术将成为该公司未来发展的关键所在. 具体来讲,与目前的其它AI领导厂商一样,Amazon公司专注于打造深度学习神经网络,旨在以原始方式模拟大脑工作原理.深度学习在过去几年中立足语音与图像识别领域取得了巨大进步,

AWS F1 正式上线,深度解析 FPGA 与公有云的亲密接触

1. 背景 历经近 5 个月的邀请内测,Amazon AWS 于 4 月 20 日宣布 FPGA EC2 实例 F1 正式上线.就在 F1 内测公布后这短短几个月时间,国内互联网巨头 BAT 加华为纷纷借势宣布开展 FPGA 云加速器业务,这一波异构计算之风势头之猛可见一斑. 其实,FPGA 以其高能效和可重编程的优势,在大型互联网企业内部早有应用并逐渐成为常态.例如媒体压缩,加解密,AI,大数据处理等领域,FPGA 方案较传统 CPU 和 GPGPU,往往可达到几倍甚至几十倍的能效提升.然而过

企业存储使用Amazon S3六大理由

Dropbox, OpenSimulator, Zmanda, Ubuntu One 和 SmugMug都是知名的在线业务品牌.他们有一个共同的特点就是都具有Amazon S3(Simple Storage Service,简单存储服务).如果你想拥有具有可扩展性.高可用性而且价格低廉的存储服务,那么Amazon S3 是个不错的选择.如果仅靠营销不能使你信服,那么有六个理由让你选择Amazon S3作为企业存储. 1. 即用即付的定价 由于没有每月的最低额定费用,你只需根据你所使用的去支付费用