AWS Environments
Applies to: IBM StreamSets as a Service
An Amazon Web Services (AWS) environment represents the Amazon virtual private cloud (VPC) in your AWS account where engines are deployed.
Your AWS administrator must create a VPC in your AWS account and configure automatic or manual AWS credentials for Control Hub to use. You then create an AWS environment in Control Hub that represents the VPC. When you activate the environment, Control Hub connects to the VPC using the configured credentials, provisions the AWS resources needed to run engines, and deploys engine instances to those resources.
While the environment is in an active state, Control Hub periodically verifies that the Amazon VPC exists and that the credentials are valid. Control Hub does not provision engine resources in the VPC until you create and start a deployment for this environment.
Before you create an AWS environment, your AWS administrator must complete several prerequisites.
Feature Versions
When you create an AWS environment, you select the feature version to use for that environment and for all deployments created for the environment. Later feature versions typically require additional permissions in AWS or require a restart of engines belonging to the deployments.
When creating a new environment, use the latest feature version. When a new feature version is available, change your existing environments to use the new feature version as soon as possible.
When needed, you can change an existing environment to use a previous feature version. However, changing to a previous feature version disables any newer features not available in the selected feature version.
AWS environments include the following feature versions:
| Feature Version | Description |
|---|---|
| AWS_2023_12_15 | Includes all features available in the initial feature version, as
well as support for the following enhancements:
|
| AWS_2021_06_01 | Initial version. |
Required Permissions
IAM Policy for AWS_2023_12_15
Use the following sample IAM policy for the AWS_2023_12_15 feature version:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "0",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"autoscaling:DescribeScalingActivities",
"ec2:DescribeVpcs",
"autoscaling:DescribeAutoScalingGroups",
"ec2:DescribeRegions",
"autoscaling:DescribeLaunchConfigurations",
"ec2:DescribeInstanceTypes",
"ec2:DescribeInstanceTypeOfferings",
"ec2:DescribeSubnets",
"ec2:DescribeKeyPairs",
"ec2:DescribeSecurityGroups",
"ec2:DescribeInstances",
"autoscaling:DescribeScheduledActions",
"autoscaling:DescribeWarmPool",
"ec2:CreateLaunchTemplate",
"ec2:DeleteLaunchTemplate",
"ec2:CreateLaunchTemplateVersion",
"ec2:DeleteLaunchTemplateVersions",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:RunInstances"
],
"Resource": "*"
},
{
"Sid": "1",
"Effect": "Allow",
"Action": [
"cloudformation:DescribeStacks",
"cloudformation:CreateStack",
"cloudformation:DeleteStack",
"cloudformation:UpdateStack",
"cloudformation:DescribeStackEvents"
],
"Resource": "arn:aws:cloudformation:*:<ACCOUNT_ID>:stack/StreamSets-*/*"
},
{
"Sid": "2",
"Effect": "Allow",
"Action": [
"ssm:GetParameters",
"ssm:GetParameter",
"ssm:PutParameter",
"ssm:DeleteParameter",
"ssm:ListTagsForResource",
"ssm:AddTagsToResource",
"ssm:RemoveTagsFromResource"
],
"Resource": "arn:aws:ssm:*:<ACCOUNT_ID>:parameter/*"
},
{
"Sid": "3",
"Effect": "Allow",
"Action": [
"autoscaling:CreateLaunchConfiguration",
"autoscaling:DeleteLaunchConfiguration",
"autoscaling:UpdateAutoScalingGroup",
"autoscaling:DeleteAutoScalingGroup",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"autoscaling:CreateAutoScalingGroup",
"autoscaling:CreateOrUpdateTags",
"autoscaling:DescribeTags",
"autoscaling:DeleteTags",
"autoscaling:SetDesiredCapacity"
],
"Resource": [
"arn:aws:autoscaling:*:<ACCOUNT_ID>:autoScalingGroup:*:autoScalingGroupName/StreamSets-*",
"arn:aws:autoscaling:*:<ACCOUNT_ID>:launchConfiguration:*:launchConfigurationName/StreamSets-*"
]
},
{
"Sid": "4",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::<ACCOUNT_ID>:role/<INSTANCE_PROFILE_NAME>"
},
{
"Sid": "5",
"Effect": "Allow",
"Action": "iam:CreateServiceLinkedRole",
"Resource": "arn:aws:iam::<ACCOUNT_ID>:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
}
]
}
IAM Policy for AWS_2021_06_01
Use the following sample IAM policy for the AWS_2021_06_01 feature version:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "0",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"autoscaling:DescribeScalingActivities",
"ec2:DescribeVpcs",
"autoscaling:DescribeAutoScalingGroups",
"ec2:DescribeRegions",
"autoscaling:DescribeLaunchConfigurations",
"ec2:DescribeInstanceTypes",
"ec2:DescribeInstanceTypeOfferings",
"ec2:DescribeSubnets",
"ec2:DescribeKeyPairs",
"ec2:DescribeSecurityGroups",
"ec2:DescribeInstances",
"autoscaling:DescribeScheduledActions",
"autoscaling:DescribeWarmPool"
],
"Resource": "*"
},
{
"Sid": "1",
"Effect": "Allow",
"Action": [
"cloudformation:DescribeStacks",
"cloudformation:CreateStack",
"cloudformation:DeleteStack",
"cloudformation:UpdateStack",
"cloudformation:DescribeStackEvents"
],
"Resource": "arn:aws:cloudformation:*:<ACCOUNT_ID>:stack/StreamSets-*/*"
},
{
"Sid": "2",
"Effect": "Allow",
"Action": [
"ssm:GetParameters",
"ssm:GetParameter",
"ssm:PutParameter",
"ssm:DeleteParameter",
"ssm:ListTagsForResource",
"ssm:AddTagsToResource",
"ssm:RemoveTagsFromResource"
],
"Resource": "arn:aws:ssm:*:<ACCOUNT_ID>:parameter/*"
},
{
"Sid": "3",
"Effect": "Allow",
"Action": [
"autoscaling:CreateLaunchConfiguration",
"autoscaling:DeleteLaunchConfiguration",
"autoscaling:UpdateAutoScalingGroup",
"autoscaling:DeleteAutoScalingGroup",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"autoscaling:CreateAutoScalingGroup",
"autoscaling:CreateOrUpdateTags",
"autoscaling:DescribeTags",
"autoscaling:DeleteTags",
"autoscaling:SetDesiredCapacity"
],
"Resource": [
"arn:aws:autoscaling:*:<ACCOUNT_ID>:autoScalingGroup:*:autoScalingGroupName/StreamSets-*",
"arn:aws:autoscaling:*:<ACCOUNT_ID>:launchConfiguration:*:launchConfigurationName/StreamSets-*"
]
},
{
"Sid": "4",
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::<ACCOUNT_ID>:role/<INSTANCE_PROFILE_NAME>"
},
{
"Sid": "5",
"Effect": "Allow",
"Action": "iam:CreateServiceLinkedRole",
"Resource": "arn:aws:iam::<ACCOUNT_ID>:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
}
]
}
Changing to the AWS_2023_12_15 Feature Version
To change an existing AWS environment to use the AWS_2023_12_15 feature version, you must log in to the AWS Management Console and update the IAM policy for credentials created for the IBM StreamSets AWS environment. Then, you log in to IBM StreamSets and edit the AWS environment to enable the feature version.
After saving the edited environment, Control Hub restarts all deployments belonging to the environment, causing AWS CloudFormation to replace all of the existing EC2 instances.
Credential Types
You grant Control Hub access to your AWS account using a cross-account role or access keys. Control Hub uses the credentials to access and provision resources in your Amazon VPC. Use a cross-account role for production.
You can configure the credential types in the following ways:
- Automatic cross-account role
-
When you configure an automatic cross-account role, Control Hub prompts you to log in to your AWS account and create a CloudFormation stack named StreamSets-CAR-<Control Hub environment ID>. The CloudFormation stack then automatically generates the following credential resources:
- Cross-account role that Control Hub assumes to perform tasks in your AWS account
- IAM policy for the cross-account role
The IAM policy includes the required permissions for the feature version selected for the AWS environment.
- Default instance profile for the EC2 instances provisioned by child deployments
- IAM policy for the default instance profile
- Manual cross-account role or manual access keys
-
When you configure a manual cross-account role or manual access keys, your AWS administrator must manually create the required credential resources, including IAM policies, instance profiles, and a cross-account role or access keys.
When you delete an AWS environment configured to use manual credentials, your AWS administrator must manually delete the corresponding credential resources created in your AWS account.
The prerequisites that your AWS administrator completes differ, depending on how you choose to configure the credentials.
Prerequisites
- Create an Amazon VPC for the IBM StreamSets AWS environment to use.
- Configure the required credentials that Control Hub uses to access and provision resources in your Amazon VPC. The prerequisites differ, depending on how you choose to configure the credentials:
Create an Amazon VPC
Create an Amazon virtual private cloud (VPC) in your AWS account.
You can use an existing VPC. However, as a best practice, create a new VPC for the exclusive use of each IBM StreamSets AWS environment.
You can use private or public subnets within the VPC network, as long as the subnets can send outbound traffic to the internet.
For instructions on creating a VPC and on allowing subnets internet access, see the Amazon VPC documentation.
Security Group
Assign a security group to the VPC that defines the required inbound and outbound rules. You can use an existing security group or create a new group.
- Inbound and outbound connections required by IBM StreamSets engines, as described in Firewall Configuration.
- Outbound connections to AWS Systems Manager. Add the IP address of the
ssm.<region>.amazonaws.comhost as an allowed destination.For the list of AWS IP addresses, see the AWS documentation.
Automatic Credential Type
When you configure automatic cross-account role credentials, Control Hub prompts you to log in to your AWS account and create a CloudFormation stack. The CloudFormation stack then automatically generates the required credential resources.
Configure a user account with access to the AWS Management Console with the IAM permissions required to create the CloudFormation stack.
The AWS user account requires all permissions listed in this sample IAM policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:DeleteStack",
"cloudformation:CreateChangeSet",
"cloudformation:GetTemplateSummary",
"cloudformation:ListStacks",
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackEvents",
"cloudformation:ListStackResources",
"cloudformation:GetStackPolicy",
"iam:CreateRole",
"iam:PassRole",
"iam:GetRole",
"iam:DeleteRole",
"iam:DeleteRolePolicy",
"iam:PutRolePolicy",
"iam:GetRolePolicy",
"iam:AttachRolePolicy",
"iam:CreateInstanceProfile",
"iam:DeleteInstanceProfile",
"iam:AddRoleToInstanceProfile",
"iam:RemoveRoleFromInstanceProfile"
],
"Resource": "*"
}
]
}
Manual Credential Types
To configure manual credential types, complete the following prerequisites:
- Configure instance profiles to associate with the provisioned EC2 instances.
- Configure the AWS credentials that Control Hub uses to access and provision resources in your Amazon VPC.
Configure Instance Profiles for EC2 Instances
Configure instance profiles for EC2 instances in your AWS account. When Control Hub provisions EC2 instances for an Amazon EC2 deployment belonging to this environment, it associates these instance profiles with the EC2 instances.
- Configure a default instance profile for the environment
- Configure a default instance profile for the parent AWS environment. When you create an Amazon EC2 deployment for this environment, you can simply use the default instance profile configured for the environment.
- Configure a unique instance profile for each deployment
- Do not configure a default instance profile for the parent AWS environment. When you create an Amazon EC2 deployment for this environment, you must configure the instance profile to use for the deployment.
- Configure a default instance profile and override as needed
- Configure a default instance profile for the parent AWS environment. When you create an Amazon EC2 deployment for this environment, you can use the default instance profile configured for the environment, or you can override the default and configure a different instance profile for the deployment to use.
Regardless of how you configure the instance profile for the EC2 instances, you must create the IAM policy and attach it to an instance profile as an AWS environment prerequisite. When you create the IAM policy that you attach to the AWS credentials that Control Hub uses to access your AWS account, you must include the Amazon resource name (ARN) of all instance profiles in that policy. This grants Control Hub the ability to associate the instance profiles with the EC2 instances.
- Create an IAM policy that grants limited access to the provisioned EC2 instances.
- Use the IAM policy with an instance profile.
Create an IAM Policy
Create an IAM policy in AWS that grants limited access to the provisioned EC2 instances. Use the sample policy provided below. You can make compatible changes to the policy as needed.
Use the Policy with an Instance Profile
In AWS, create an instance profile to associate with the provisioned EC2 instances. You can create a single default instance profile to use for all deployments belonging to the parent environment, or you can create a unique instance profile for each deployment.
Configure AWS Credentials
You can grant Control Hub access to your AWS account using a manual cross-account role or access keys. Control Hub uses the credentials to access and provision resources in your Amazon VPC. Use a cross-account role for production.
Complete the following steps to configure manual AWS credentials for Control Hub:
- Create an IAM policy that delegates limited access to Control Hub. Create the same policy when using either authentication method.
- Use the IAM policy with a cross-account role or with access keys.
Create an IAM Policy
For either authentication method, create an IAM policy in AWS that delegates limited access to Control Hub. Use the sample policy required for the feature version you plan to use. You can make compatible changes to the policy as needed.
Use the Policy with a Cross-Account Role
For cross-account role authentication, create a cross-account role and attach the IAM policy that you created to this role. Control Hub assumes this role to perform tasks in your AWS account.
Use the Policy with Access Keys
For access keys authentication, create an IAM user with programmatic access that uses access keys, and attach the IAM policy that you created to this user. Control Hub uses these access keys to perform tasks in your AWS account.
Configuring an AWS Environment
Configure an AWS environment to define where to deploy IBM StreamSets engines in your AWS account.
To create a new environment, click in the Navigation panel, and then click the Create
Environment icon:
. Or, if you saved an incomplete environment when you retrieved the information
required by the prerequisites, simply edit that environment.
To edit an existing environment, click in the Navigation panel, click the environment name, and then click Edit.
Define the Environment
Define the environment essentials, including the environment name and type, and optional tags to identify similar environments.
Configure AWS Credentials
You grant Control Hub access to your AWS account using a cross-account role or access keys. You can configure a cross-account role automatically or manually. You can configure access keys manually only. Control Hub uses the credentials to access and provision resources in your Amazon VPC. Use a cross-account role for production.
For more information about each credential option, see Credential Types.
Configuring Automatic Cross-Account Role
You can use the automatic cross-account role credential type to configure the credentials that Control Hub uses to access and provision resources in your AWS account.
Configuring Manual Cross-Account Role
You can use the manual cross-account role credential type to configure the credentials that Control Hub uses to access and provision resources in your AWS account.
Configuring Manual Access Keys
You can use the manual access keys credential type to configure the credentials that Control Hub uses to access and provision resources in your AWS account.
Select the AWS Region
Select the AWS region for the Amazon VPC created as a prerequisite by your AWS administrator.
Configure the AWS VPC
Select the Amazon VPC created as a prerequisite by your AWS administrator, and optionally define AWS tags to apply to provisioned AWS resources.
Configure AWS Subnets
Select the subnets and security group to use within the Amazon VPC created as a prerequisite by your AWS administrator.
Share the Environment
By default, the environment can only be seen by you. Share the environment with other users and groups to grant them access to it.
Review and Activate the Environment
You've successfully finished creating the environment. Activate the environment so that you can create deployments for the environment.
- Exit - Saves the environment and exits the wizard, displaying the Deactivated environment in the Environments view.
- Activate & Add Deployment - Activates the environment and opens the deployment wizard so that you can create a deployment for the environment.
- Activate & Exit - Activates the environment and exits the wizard, displaying the Active environment in the Environments view.

