Ec2 Spot Fleet Bamboo Plugin banner
awslabs awslabs

Ec2 Spot Fleet Bamboo Plugin

Development community

Description

Plugin for Atlassian Bamboo, a continuous integration (CI) tool. The plugin allows users to associate an EC2 Spot Fleet with Bamboo to complete tasks as a part of the CI process.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

Plugin setup/installation guide

For Bamboo Production Use

Read before using

While using Spot Fleet, it is possible that you will be outbid and your instances will be terminated. Any builds running on terminated instances will not be completed.

The plugin relies on fleet remote agents following the naming convention "ip-xxx-xxx-xxx-xxx.xxxxxxx.internal", i.e beginning with "ip-" and ending with ".internal". Other remote agents following the same naming conventions will conflict with the plugin, causing the conflicting agents to be removed from Bamboo. If you use other ec2 instances as remote agents, rename them before running the task.

AWS account setup - before using the Fleet plugin for Bamboo you must set a few things up on your AWS account

[Create/log in to your AWS account](aws.amazon.com)

Create a user with the necessary permissions and credentials

  • Navigate to IAM under services
  • Select users from the tab on the left
  • Click the create button
  • Add a new user
    • Details - choose a name for this user and select programmatic access ![User Creation](../master/DocumentationImages/UserDetails.png)

    • Permissions - select "attach existing policies" directly and click the "Create policy" button, opening a new window/tab

      • In the Create policy page click the select button under "Create Your Own Policy"
      • Provide a name and description for this policy
      • Copy and paste the following into the policy document:
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ec2:DescribeImages",
                        "ec2:DescribeInstances",
                        "ec2:DescribeSubnets",
                        "ec2:RequestSpotInstances",
                        "ec2:TerminateInstances",
                        "ec2:DescribeInstanceSt