AWS的自动部署工具codedeploy 部署前的准备工作

开始部署codedeploy:

1.先预置IAM用户:

创建一个IAM用户或使用一个与AWS相关联的用户;

复制以下的策略附加到IAM用户,向IAM用户赋予对codedeploy(及codedeploy所依赖的AWS服务和操作)的访问权限:

{
  "Version": "2012-10-17",
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "autoscaling:*",
        "codedeploy:*",
        "ec2:*",
        "lambda:*",
        "ecs:*",
        "elasticloadbalancing:*",
        "iam:AddRoleToInstanceProfile",
        "iam:CreateInstanceProfile",
        "iam:CreateRole",
        "iam:DeleteInstanceProfile",
        "iam:DeleteRole",
        "iam:DeleteRolePolicy",
        "iam:GetInstanceProfile",
        "iam:GetRole",
        "iam:GetRolePolicy",
        "iam:ListInstanceProfilesForRole",
        "iam:ListRolePolicies",
        "iam:ListRoles",
        "iam:PassRole",
        "iam:PutRolePolicy",
        "iam:RemoveRoleFromInstanceProfile", 
        "s3:*"
      ],
      "Resource" : "*"
    }    
  ]
}

可以使用提供的AWS cloudformation 模板启动与codedeploy兼容的EC2实例;如果使用AWS cloudformation 模板创建应用程序,部署组及部署配置,需要向IAM用户赋予AWS  cloudformation和AWS cloudformation 所依赖的AWS服务和操作的访问权限,例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [                
        "cloudformation:*"        
      ],
      "Resource": "*"
    }
  ]
}

2.安装或升级AWS CLI 或升级:

要从本地的计算机上调用codedeploy,必须安装AWS CLI 。

AWS CLI 的 1.6.1 版最先提供了 CodeDeploy 命令。而 1.7.19 版的 AWS CLI 中提供了用于处理本地实例的 CodeDeploy 命令;

安装的是旧版 AWS CLI,则必须升级它,以使 CodeDeploy 命令可用。调用 aws --version 来查看版本

使用捆绑安装程序安装AWS CLI:(这是为当前用户安装AWS CLI命令)

curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

unzip awscli-bundle.zip

./awscli-bundle/install -b ~/bin/aws

这会将 AWS CLI 安装到默认位置 (~/.local/lib/aws) 并在 ~/bin/aws 中创建符号链接 (symlink)。确保您的 ~/bin 环境变量中包含 PATH,以使该符号链接生效。

$ echo $PATH | grep ~/bin$ export PATH=~/bin:$PATH

确保$PATH 设置在多次会话之间保留,将 export 行添加到 shell 配置文件(~/.profile~/.bash_profile 等)

卸载AWS CLI:

除了可选的符号链接之外,捆绑安装程序不会将任何内容放在安装目录之外,所以卸载十分简单,就是直接删除这两个项目,

sudo rm -rf /usr/local/aws
sudo rm /usr/local/bin/aws

在安装完后需要进行配置:

aws config 命令是配置AWS CLI 最快的方法:

$ aws configureAWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]: us-west-2Default output format [None]: json

键入该命令时,AWS CLI 会提示您输入四条信息(访问密钥、秘密访问密钥,AWS 区域和输出格式),并将它们存储在名为 default 的配置文件(一个设置集合)中。每当您运行的 AWS CLI 命令未明确指定要使用的配置文件时,就会使用该配置文件.

AWS Access Key ID 和 AWS Secret Access Key 它和IAM或角色相关联。

在配置 AWS CLI 时,系统将提示您指定 AWS 区域。选择 AWS General Reference 中的区域和终端节点中列出的支持区域之一

要确认安装或者升级:可以使用(aws deploy  help)

3.为codedeploy创建服务角色:

为codedeploy创建的服务角色必须授予对计算平台所需的权限,部署多个平台,建议为每一个平台创建一个角色,要添加权限,请添加以下一个或多个AWS提供的策略:

对于 EC2/本地 部署,附加 AWSCodeDeployRole 策略。该策略为您的服务角色提供针以下权限:

阅读您实例上的标签或通过 Amazon EC2 Auto Scaling 组名称来识别您的 Amazon EC2 实例。

读取、创建、更新和删除 Amazon EC2 Auto Scaling 组、生命周期挂钩和扩展策略。

将信息发布到 Amazon SNS 主题。

检索有关 CloudWatch 警报的信息。

读取和更新 Elastic Load Balancing。

对于 Amazon ECS 部署,附加 AWSCodeDeployRoleForECS 策略。该策略为您的服务角色提供针以下权限:

读取、更新和删除 Amazon ECS 任务集。

更新 Elastic Load Balancing 目标组、侦听器和规则。

调用 AWS Lambda 函数。

访问 Amazon S3 存储桶中的修订文件。

检索有关 CloudWatch 警报的信息。

将信息发布到 Amazon SNS 主题。

对于 AWS Lambda 部署,附加 AWSCodeDeployRoleForLambda 策略。该策略为您的服务角色提供针以下权限:

  • 读取、更新和调用 AWS Lambda 函数和别名。

  • 访问 Amazon S3 存储桶中的修订文件。

  • 将信息发布到 Amazon SNS 主题。

  • 检索有关 CloudWatch 警报的信息。

在设置服务角色过程中,还可以更新其信任关系,指定希望向其授予访问权限的终端节点。

4.为EC2实例创建IAM实例配置文件:

ECS和lambda平台是不需要IAM实例配置文件的;

ECS部署会部署一个ECS服务, Lambda部署会部署一个无服务器的Lambda函数版本;

登录AWS管理控制台并通过以下网址打开IAM控制台https://console.aws.amazon.com/iam/

在IAM控制台的导航窗格中,选择策略(策略),然后选择创建策略(创建策略)。(如果开始按钮出现,选择此按钮,然后选择创建策略。)

创建³³策略页面上的JSON选项卡中粘贴以下内容:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

建议将此策略限制为仅 EC2实例必须访问的 S3。允许访问包含CodeDeploy代理的 S3。否则,在实例上安装或更新CodeDeploy代理时可能会发生错误。要授予IAM实例配置文件仅访问 S3中的某些CodeDeploy资源工具包存储桶,请使用以下策略,但删除要阻止访问的存储桶行:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": [
        "arn:aws:s3:::replace-with-your-s3-bucket-name/*",
        "arn:aws:s3:::aws-codedeploy-us-east-2/*",
        "arn:aws:s3:::aws-codedeploy-us-east-1/*",
        "arn:aws:s3:::aws-codedeploy-us-west-1/*",
        "arn:aws:s3:::aws-codedeploy-us-west-2/*",
        "arn:aws:s3:::aws-codedeploy-ca-central-1/*",
        "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
        "arn:aws:s3:::aws-codedeploy-eu-west-2/*",
        "arn:aws:s3:::aws-codedeploy-eu-west-3/*",
        "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
        "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
        "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
        "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",        
        "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
        "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
        "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
      ]
    }
  ]
}

  1. 选择查看策略

  2. Create policy(创建策略)页面上,在Policy Name(策略名称)框中键入CodeDeployDemo-EC2-Permissions

  3. (任选)对于描述,键入策略的描述。

  4. 选择创建策略

  5. 在导航窗格中,选择角色,然后选择创建角色

  6. Create role创建角色)页面上,选择AWS服务(AWS服务),然后从选择将使用此角色的服务(选择将使用此角色的服务)列表中,选择EC2

  7. 选择您的使用案例列表中,选择EC2

  8. 选择下一个:权限

  9. 附件权限策略页面中,选择您刚刚创建的策略,选择然后下一步:标签。如果您使用建议的名称,则该名称是CodeDeployDemo-EC2-Permissions

  10. 评论页面上的角色名称中,键入服务角色(例如,CodeDeployDemo-EC2-Instance-Profile),然后选择创建角色

    您还可以在部署说明框中键入此服务角色的说明。

现在,要附加到Amazon EC2实例的IAM实例配置文件已经创建完了。

转载于:https://my.oschina.net/u/4115857/blog/3039989

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值