Function Deployment - AWS
This playbook automates the deployment of an AWS Lambda function to manage resources within an Amazon EKS cluster. It ensures that all necessary configurations are created, updated, and verified. ### Setup - **Describe EKS Cluster**: Gather essential details of the EKS cluster. - **Create IAM Role**: Set up a new IAM role for the Lambda function. - **Create and Attach Policy**: Define and attach a policy to the IAM role to grant necessary permissions. ### Authentication Mode Check - **Verify Authentication Mode**: Ensure the current authentication mode allows API access. - **If not**: Update the cluster authentication mode to permit API access. ### Access Entry Configuration - **Create Access Entry**: Establish a new access entry in the EKS cluster. - **Associate Access Policy**: Link the access policy with the created access entry. - **Update Access Entry**: Apply the latest configurations to the access entry. ### VPC and Security Group Setup - **Describe VPCs**: Identify the appropriate VPC for the Lambda function. - **Create Security Group**: Define a security group to manage Lambda function traffic. - **Set Ingress Rules**: Configure ingress rules for the security group. ### VPC Endpoint Creation - **Create VPC Endpoint for eks-auth**: Establish a VPC endpoint for EKS authentication. - **Check for Errors**: Verify if there are any errors during the creation of the VPC endpoint. - **If errors**: Handle and log them. - **Verify VPC Endpoint Existence**: Ensure the VPC endpoint already exists. - **If exists**: Proceed with the next steps. ### Lambda Function Deployment - **Download Kubernetes Library**: Fetch the necessary Kubernetes library. - **Publish AWS Lambda Layer**: Publish a new layer version for the AWS Lambda function. - **Create Lambda Code**: Develop the Lambda function code. - **Zip Lambda Code**: Compress the Lambda function code for deployment. - **Create AWS Lambda Function**: Deploy the Lambda function using the zipped code. ### Resolution - **Final Verification**: Ensure all operations have been successfully completed. - **Completion**: Confirm the deployment process is finished, ensuring robust management of EKS authentication through AWS Lambda. This playbook provides a comprehensive, automated approach to deploying an AWS Lambda function for managing resources within an EKS cluster, efficiently handling all configurations and potential errors. ### Required Integration #### AWS IAM (Identity and Access Management) - [AWS IAM API Documentation](https://docs.aws.amazon.com/IAM/latest/APIReference/Welcome.html) - [Cortex XSOAR AWS IAM Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSIAM/) #### AWS EC2 (Elastic Compute Cloud) - [AWS EC2 API Documentation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html) - [Cortex XSOAR AWS EC2 Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSEC2/) #### AWS EKS (Elastic Kubernetes Service) - [AWS EKS API Documentation](https://docs.aws.amazon.com/eks/latest/APIReference/Welcome.html) - [Cortex XSOAR AWS EKS Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSEKS/) #### AWS Lambda - [AWS Lambda API Documentation](https://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html) - [Cortex XSOAR AWS Lambda Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSLambda/).
AWS Enrichment and Remediation · 28 tasks · 13 inputs · 135 outputs
Details
| ID | Function Deployment - AWS |
|---|---|
| From Version | 6.10.0 |
| Tasks | 28 |
README
This playbook automates the deployment of an AWS Lambda function to manage resources within an Amazon EKS cluster. It ensures that all necessary configurations are created, updated, and verified.
Setup
- Describe EKS Cluster: Gather essential details of the EKS cluster.
- Create IAM Role: Set up a new IAM role for the Lambda function.
- Create and Attach Policy: Define and attach a policy to the IAM role to grant necessary permissions.
Authentication Mode Check
- Verify Authentication Mode: Ensure the current authentication mode allows API access.
- If not: Update the cluster authentication mode to permit API access.
Access Entry Configuration
- Create Access Entry: Establish a new access entry in the EKS cluster.
- Associate Access Policy: Link the access policy with the created access entry.
- Update Access Entry: Apply the latest configurations to the access entry.
VPC and Security Group Setup
- Describe VPCs: Identify the appropriate VPC for the Lambda function.
- Create Security Group: Define a security group to manage Lambda function traffic.
- Set Ingress Rules: Configure ingress rules for the security group.
VPC Endpoint Creation
- Create VPC Endpoint for eks-auth: Establish a VPC endpoint for EKS authentication.
- Check for Errors: Verify if there are any errors during the creation of the VPC endpoint.
- If errors: Handle and log them.
- Verify VPC Endpoint Existence: Ensure the VPC endpoint already exists.
- If exists: Proceed with the next steps.
Lambda Function Deployment
- Download Kubernetes Library: Fetch the necessary Kubernetes library.
- Publish AWS Lambda Layer: Publish a new layer version for the AWS Lambda function.
- Create Lambda Code: Develop the Lambda function code.
- Zip Lambda Code: Compress the Lambda function code for deployment.
- Create AWS Lambda Function: Deploy the Lambda function using the zipped code.
Resolution
- Final Verification: Ensure all operations have been successfully completed.
- Completion: Confirm the deployment process is finished, ensuring robust management of EKS authentication through AWS Lambda.
This playbook provides a comprehensive, automated approach to deploying an AWS Lambda function for managing resources within an EKS cluster, efficiently handling all configurations and potential errors.
Required Integration
AWS IAM (Identity and Access Management)
AWS EC2 (Elastic Compute Cloud)
AWS EKS (Elastic Kubernetes Service)
AWS Lambda
Dependencies
This playbook uses the following sub-playbooks, integrations, and scripts.
Sub-playbooks
This playbook does not use any sub-playbooks.
Integrations
This playbook does not use any integrations.
Scripts
- FileCreateAndUploadV2
- GetErrorsFromEntry
- ZipFile
- DownloadAndArchivePythonLibrary
- PrintErrorEntry
Commands
- aws-eks-describe-cluster
- aws-ec2-create-security-group
- aws-eks-associate-access-policy
- aws-ec2-create-vpc-endpoint
- aws-eks-update-cluster-config
- aws-iam-attach-policy
- aws-eks-update-access-entry
- aws-ec2-describe-vpcs
- aws-ec2-authorize-security-group-ingress-rule
- aws-lambda-publish-layer-version
- aws-eks-create-access-entry
- aws-lambda-create-function
- aws-iam-create-policy
- aws-iam-create-role
Playbook Inputs
| Name | Description | Default Value | Required |
|---|---|---|---|
| ClusterName | The name of the cluster. | Optional | |
| region | The region of the cluster. | Optional | |
| FunctionName | The name of the Lambda function. | Optional | |
| FunctionCode | Entry ID of the uploaded base64-encoded contents of the deployment package. Amazon Web Services SDK and CLI clients handle the encoding for you. | Optional | |
| FunctionRuntime | The runtime environment for the function. | Optional | |
| FunctionHandler | The name of the method within your code that Lambda calls to execute your function. | Optional | |
| LayerName | The name to assign to the new Lambda layer. | Optional | |
| LayerRuntime | The name of the method within your code that Lambda calls to execute your function. | Optional | |
| LayerArchitecture | A list of compatible architectures. | Optional | |
| LibraryName | The Python library to download and attach to the Lambda Function. e.g. To be able to use the kubernetes library, use ‘kubernetes’ and the script will download and pack its files. |
Optional | |
| LambdaRoleName | The lambda role name to create. | Optional | |
| LambdaPolicyName | The lambda policy name to create. | Optional | |
| SecurityGroupName | The security group name to create. | Optional |
Playbook Outputs
| Path | Description | Type |
|---|---|---|
| AWS.EKS.DescribeCluster.name | The name of your cluster. | unknown |
| AWS.EKS.DescribeCluster.arn | The Amazon Resource Name (ARN) of the cluster. | unknown |
| AWS.EKS.DescribeCluster.createdAt | The creation date of the object. | unknown |
| AWS.EKS.DescribeCluster.version | The Kubernetes server version for the cluster. | unknown |
| AWS.EKS.DescribeCluster.endpoint | The endpoint for your Kubernetes API server. | unknown |
| AWS.EKS.DescribeCluster.roleArn | The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to Amazon Web Services API operations on your behalf. | unknown |
| AWS.EKS.DescribeCluster.identity | The identity provider information for the cluster. | unknown |
| AWS.EKS.DescribeCluster.status | The current status of the cluster. | unknown |
| AWS.EKS.DescribeCluster.clientRequestToken | A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. | unknown |
| AWS.EKS.DescribeCluster.platformVersion | The platform version of your Amazon EKS cluster. | unknown |
| AWS.EKS.DescribeCluster.tags | A dictionary containing metadata for categorization and organization. | unknown |
| AWS.EKS.DescribeCluster.id | The ID of your local Amazon EKS cluster on an Amazon Web Services Outpost. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.subnetIds | The subnets associated with your cluster. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.securityGroupIds | The security groups associated with the cross-account elastic network interfaces that are used to allow communication between your nodes and the Kubernetes control plane. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.clusterSecurityGroupId | The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.vpcId | The VPC associated with your cluster. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPublicAccess | Whether the public API server endpoint is enabled. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPrivateAccess | This parameter indicates whether the Amazon EKS private API server endpoint is enabled. | unknown |
| AWS.EKS.DescribeCluster.resourcesVpcConfig.publicAccessCidrs | The CIDR blocks that are allowed access to your cluster’s public Kubernetes API server endpoint. | unknown |
| AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv4Cidr | The CIDR block that Kubernetes Pod and Service object IP addresses are assigned from. | unknown |
| AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv6Cidr | The CIDR block that Kubernetes Pod and Service IP addresses are assigned from if you created a 1.21 or later cluster with version 1.10.1 or later of the Amazon VPC CNI add-on and specified ipv6 for ipFamily when you created the cluster. | unknown |
| AWS.EKS.DescribeCluster.kubernetesNetworkConfig.ipFamily | The IP family used to assign Kubernetes Pod and Service objects IP addresses. | unknown |
| AWS.EKS.DescribeCluster.logging.clusterLogging | The cluster control plane logging configuration for your cluster. | unknown |
| AWS.EKS.DescribeCluster.certificateAuthority.data | The Base64-encoded certificate data required to communicate with your cluster. | unknown |
| AWS.EKS.DescribeCluster.encryptionConfig.resources | Specifies the resources to be encrypted. The only supported value is secrets. | unknown |
| AWS.EKS.DescribeCluster.encryptionConfig.provider | Key Management Service (KMS) key. | unknown |
| AWS.EKS.DescribeCluster.connectorConfig.activationId | A unique ID associated with the cluster for registration purposes. | unknown |
| AWS.EKS.DescribeCluster.connectorConfig.activationCode | A unique code associated with the cluster for registration purposes. | unknown |
| AWS.EKS.DescribeCluster.connectorConfig.activationExpiry | The expiration time of the connected cluster. | unknown |
| AWS.EKS.DescribeCluster.connectorConfig.provider | The cluster’s cloud service provider. | unknown |
| AWS.EKS.DescribeCluster.connectorConfig.roleArn | The Amazon Resource Name (ARN) of the role to communicate with services from the connected Kubernetes cluster. | unknown |
| AWS.EKS.DescribeCluster.health.issues | An object representing the health issues of your local Amazon EKS cluster on an Amazon Web Services Outpost. | unknown |
| AWS.EKS.DescribeCluster.outpostConfig.outpostArns | An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. | unknown |
| AWS.EKS.DescribeCluster.outpostConfig.controlPlaneInstanceType | The Amazon EC2 instance type used for the control plane. | unknown |
| AWS.EKS.DescribeCluster.outpostConfig.controlPlanePlacement | An object representing the placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost. | unknown |
| AWS.EKS.DescribeCluster.accessConfig.bootstrapClusterCreatorAdminPermissions | Specifies whether or not the cluster creator IAM principal was set as a cluster admin access entry during cluster creation time. | unknown |
| AWS.EKS.DescribeCluster.accessConfig.authenticationMode | The current authentication mode of the cluster. | unknown |
| AWS.IAM.Roles.RoleName | The friendly name that identifies the role. | unknown |
| AWS.IAM.Roles.RoleId | The stable and unique string identifying the role. | unknown |
| AWS.IAM.Roles.Arn | The Amazon Resource Name (ARN) specifying the role. | unknown |
| AWS.IAM.Roles.CreateDate | The date and time, when the role was created. | unknown |
| AWS.IAM.Roles.Path | The path to the role. | unknown |
| AWS.IAM.Roles.AssumeRolePolicyDocument | he policy that grants an entity permission to assume the role. | unknown |
| AWS.IAM.Roles.Description | A description of the role that you provide. | unknown |
| AWS.IAM.Roles.MaxSessionDuration | The maximum session duration (in seconds) for the specified role. | unknown |
| AWS.IAM.Policies.PolicyName | The friendly name (not ARN) identifying the policy. | unknown |
| AWS.IAM.Policies.PolicyId | The stable and unique string identifying the policy. | unknown |
| AWS.IAM.Policies.Arn | The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. | unknown |
| AWS.IAM.Policies.Path | The path to the policy. | unknown |
| AWS.IAM.Policies.DefaultVersionId | The identifier for the version of the policy that is set as the default version. | unknown |
| AWS.IAM.Policies.Description | A friendly description of the policy. | unknown |
| AWS.IAM.Policies.CreateDate | The date and time, in ISO 8601 date-time format , when the policy was created. | unknown |
| AWS.IAM.Policies.UpdateDate | The date and time, in ISO 8601 date-time format , when the policy was last updated. | unknown |
| AWS.EKS.CreateAccessEntry.clusterName | The name of the cluster. | unknown |
| AWS.EKS.CreateAccessEntry.principalArn | The ARN of the IAM principal for the access entry. | unknown |
| AWS.EKS.CreateAccessEntry.kubernetesGroups | A list of names that you’ve specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects. | unknown |
| AWS.EKS.CreateAccessEntry.accessEntryArn | The ARN of the access entry. | unknown |
| AWS.EKS.CreateAccessEntry.createdAt | The creation date of the object. | unknown |
| AWS.EKS.CreateAccessEntry.modifiedAt | The date and time for the last modification to the object. | unknown |
| AWS.EKS.CreateAccessEntry.tags | A dictionary containing metadata for categorization and organization. | unknown |
| AWS.EKS.CreateAccessEntry.username | The name of a user that can authenticate to the cluster. | unknown |
| AWS.EKS.CreateAccessEntry.type | The type of the access entry. | unknown |
| AWS.EKS.AssociatedAccessPolicy.clusterName | The name of your cluster. | unknown |
| AWS.EKS.AssociatedAccessPolicy.principalArn | The ARN of the IAM principal for the AccessEntry. | unknown |
| AWS.EKS.AssociatedAccessPolicy.policyArn | The ARN of the AccessPolicy. | unknown |
| AWS.EKS.AssociatedAccessPolicy.associatedAt | The date and time the AccessPolicy was associated with an AccessEntry. | unknown |
| AWS.EKS.AssociatedAccessPolicy.modifiedAt | The date and time for the last modification to the object. | unknown |
| AWS.EKS.AssociatedAccessPolicy.accessScope.type | The scope type of an access policy. | unknown |
| AWS.EKS.AssociatedAccessPolicy.accessScope.namespaces | A Kubernetes namespace that an access policy is scoped to. | unknown |
| AWS.EKS.UpdateAccessEntry.clusterName | The name of your cluster. | unknown |
| AWS.EKS.UpdateAccessEntry.principalArn | The ARN of the IAM principal for the access entry. | unknown |
| AWS.EKS.UpdateAccessEntry.kubernetesGroups | A list of names that you’ve specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects. | unknown |
| AWS.EKS.UpdateAccessEntry.accessEntryArn | The ARN of the access entry. | unknown |
| AWS.EKS.UpdateAccessEntry.createdAt | The creation date of the object. | unknown |
| AWS.EKS.UpdateAccessEntry.modifiedAt | The date and time for the last modification to the object. | unknown |
| AWS.EKS.UpdateAccessEntry.tags | Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. | unknown |
| AWS.EKS.UpdateAccessEntry.username | The name of a user that can authenticate to your cluster. | unknown |
| AWS.EKS.UpdateAccessEntry.type | The type of the access entry. | unknown |
| AWS.Lambda.Layers.LayerVersionArn | The ARN of the layer version. | unknown |
| AWS.Lambda.Layers.LayerArn | The ARN of the layer. | unknown |
| AWS.Lambda.Layers.Description | The description of the version. | unknown |
| AWS.Lambda.Layers.CreatedDate | The date that the layer version was created, in ISO-8601 format (YYYY-MM-DDThh:mm:ss.sTZD). | unknown |
| AWS.Lambda.Layers.Version | The version number. | unknown |
| AWS.Lambda.Layers.CompatibleRuntimes | The layer’s compatible runtimes. | unknown |
| AWS.Lambda.Layers.CompatibleArchitectures | The layer’s compatible architectures. | unknown |
| AWS.Lambda.Functions.FunctionName | The name of the function. | unknown |
| AWS.Lambda.Functions.FunctionArn | The function’s Amazon Resource Name (ARN). | unknown |
| AWS.Lambda.Functions.Runtime | The identifier of the function’s runtime. Runtime is required if the deployment package is a .zip file archive. | unknown |
| AWS.Lambda.Functions.Role | The function’s execution role. | unknown |
| AWS.Lambda.Functions.Handler | The function that Lambda calls to begin running your function. | unknown |
| AWS.Lambda.Functions.Description | The function’s description. | unknown |
| AWS.Lambda.Functions.PackageType | The type of deployment package. Set to Image for container image and set Zip for .zip file archive. | unknown |
| AWS.Lambda.Functions.LastModified | The date and time that the function was last updated, in ISO-8601 format (YYYY-MM-DDThh:mm:ss.sTZD). | unknown |
| AWS.Lambda.Functions.Timeout | The amount of time in seconds that Lambda allows a function to run before stopping it. | unknown |
| AWS.Lambda.Functions.VpcConfig.SubnetIds | A list of VPC subnet IDs. | unknown |
| AWS.Lambda.Functions.VpcConfig.SecurityGroupIds | A list of VPC security group IDs. | unknown |
| AWS.Lambda.Functions.VpcConfig.VpcId | The ID of the VPC. | unknown |
| AWS.Lambda.Functions.VpcConfig.Ipv6AllowedForDualStack | Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets. | unknown |
| AWS.EKS.UpdateCluster.clusterName | The name of the cluster. | unknown |
| AWS.EKS.UpdateCluster.id | The ID of the update. | unknown |
| AWS.EKS.UpdateCluster.status | The status of the update. | unknown |
| AWS.EKS.UpdateCluster.type | The type of the update. | unknown |
| AWS.EKS.UpdateCluster.params | The parameters of the update. | unknown |
| AWS.EKS.UpdateCluster.createdAt | The creation date of the object. | unknown |
| File.Name | The name of the file. | String |
| File.EntryID | The entry ID of the file. | String |
| File.Type | The file type. | String |
| File.Extension | The file extension. | String |
| File.SHA256 | The SHA256 hash of the file. | String |
| ZipFile.ZippedFile | The zipped file. | string |
| AWS.EC2.Vpcs.VpcEndpoint.VpcEndpointId | The ID of the endpoint. | unknown |
| AWS.EC2.Vpcs.VpcEndpoint.State | The state of the VPC endpoint. | unknown |
| AWS.EC2.Vpcs.VpcEndpoint.ServiceName | The service name of the VPC endpoint. | unknown |
| AWS.EC2.Vpcs.VpcEndpoint.VpcId | The ID of the VPC to which the endpoint is associated. | unknown |
| AWS.EC2.Vpcs.VpcEndpoint.EndpointType | The type of the VPC endpoint. | unknown |
| AWS.EC2.Vpcs.VpcId | The ID of the VPC. | unknown |
| AWS.EC2.Vpcs.AccountId | The ID of the AWS account with which the EC2 instance is associated. This key is only present when the parameter “AWS organization accounts” is provided. | unknown |
| AWS.EC2.Vpcs.State | The current state of the VPC. | unknown |
| AWS.EC2.Vpcs.CidrBlock | The primary IPv4 CIDR block for the VPC. | unknown |
| AWS.EC2.Vpcs.Tags.Key | The key of the tag. | unknown |
| AWS.EC2.Vpcs.Tags.Value | The value of the tag. | unknown |
| AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.AssociationId | The association ID for the IPv6 CIDR block. | unknown |
| AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlock | The IPv6 CIDR block. | unknown |
| AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State | The state of the CIDR block. | unknown |
| AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage | A message about the status of the CIDR block, if applicable. | unknown |
| AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.AssociationId | The association ID for the IPv4 CIDR block. | unknown |
| AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlock | The IPv4 CIDR block. | unknown |
| AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.State | The state of the CIDR block. | unknown |
| AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.StatusMessage | A message about the status of the CIDR block, if applicable. | unknown |
| AWS.EC2.SecurityGroups.GroupName | The name of the security group. | unknown |
| AWS.EC2.SecurityGroups.Description | A description for the security group. | unknown |
| AWS.EC2.SecurityGroups.VpcId | The ID of the VPC. | unknown |
| AWS.EC2.SecurityGroups.GroupId | The ID of the security group. | unknown |
| AWS.EC2.SecurityGroups.AccountId | The ID of the AWS account with which the EC2 instance is associated. This key is only present when the parameter “AWS organization accounts” is provided. | unknown |
| ErrorEntries | Contents of the errors associated with the entry/entries. | unknown |
Playbook Image

Inputs
ClusterName— The name of the cluster.region— The region of the cluster.FunctionName— The name of the Lambda function.FunctionCode— Entry ID of the uploaded base64-encoded contents of the deployment package. Amazon Web Services SDK and CLI clients handle the encoding for you.FunctionRuntime— The runtime environment for the function.FunctionHandler— The name of the method within your code that Lambda calls to execute your function.LayerName— The name to assign to the new Lambda layer.LayerRuntime— The name of the method within your code that Lambda calls to execute your function.LayerArchitecture— A list of compatible architectures.LibraryName— The Python library to download and attach to the Lambda Function. e.g. To be able to use the kubernetes library, use 'kubernetes' and the script will download and pack its files.LambdaRoleName— The lambda role name to create.LambdaPolicyName— The lambda policy name to create.SecurityGroupName— The security group name to create.
Outputs
AWS.EKS.DescribeCluster.name— The name of your cluster.AWS.EKS.DescribeCluster.arn— The Amazon Resource Name (ARN) of the cluster.AWS.EKS.DescribeCluster.createdAt— The creation date of the object.AWS.EKS.DescribeCluster.version— The Kubernetes server version for the cluster.AWS.EKS.DescribeCluster.endpoint— The endpoint for your Kubernetes API server.AWS.EKS.DescribeCluster.roleArn— The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to Amazon Web Services API operations on your behalf.AWS.EKS.DescribeCluster.identity— The identity provider information for the cluster.AWS.EKS.DescribeCluster.status— The current status of the cluster.AWS.EKS.DescribeCluster.clientRequestToken— A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.AWS.EKS.DescribeCluster.platformVersion— The platform version of your Amazon EKS cluster.AWS.EKS.DescribeCluster.tags— A dictionary containing metadata for categorization and organization.AWS.EKS.DescribeCluster.id— The ID of your local Amazon EKS cluster on an Amazon Web Services Outpost.AWS.EKS.DescribeCluster.resourcesVpcConfig.subnetIds— The subnets associated with your cluster.AWS.EKS.DescribeCluster.resourcesVpcConfig.securityGroupIds— The security groups associated with the cross-account elastic network interfaces that are used to allow communication between your nodes and the Kubernetes control plane.AWS.EKS.DescribeCluster.resourcesVpcConfig.clusterSecurityGroupId— The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication.AWS.EKS.DescribeCluster.resourcesVpcConfig.vpcId— The VPC associated with your cluster.AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPublicAccess— Whether the public API server endpoint is enabled.AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPrivateAccess— This parameter indicates whether the Amazon EKS private API server endpoint is enabled.AWS.EKS.DescribeCluster.resourcesVpcConfig.publicAccessCidrs— The CIDR blocks that are allowed access to your cluster’s public Kubernetes API server endpoint.AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv4Cidr— The CIDR block that Kubernetes Pod and Service object IP addresses are assigned from.AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv6Cidr— The CIDR block that Kubernetes Pod and Service IP addresses are assigned from if you created a 1.21 or later cluster with version 1.10.1 or later of the Amazon VPC CNI add-on and specified ipv6 for ipFamily when you created the cluster.AWS.EKS.DescribeCluster.kubernetesNetworkConfig.ipFamily— The IP family used to assign Kubernetes Pod and Service objects IP addresses.AWS.EKS.DescribeCluster.logging.clusterLogging— The cluster control plane logging configuration for your cluster.AWS.EKS.DescribeCluster.certificateAuthority.data— The Base64-encoded certificate data required to communicate with your cluster.AWS.EKS.DescribeCluster.encryptionConfig.resources— Specifies the resources to be encrypted. The only supported value is secrets.AWS.EKS.DescribeCluster.encryptionConfig.provider— Key Management Service (KMS) key.AWS.EKS.DescribeCluster.connectorConfig.activationId— A unique ID associated with the cluster for registration purposes.AWS.EKS.DescribeCluster.connectorConfig.activationCode— A unique code associated with the cluster for registration purposes.AWS.EKS.DescribeCluster.connectorConfig.activationExpiry— The expiration time of the connected cluster.AWS.EKS.DescribeCluster.connectorConfig.provider— The cluster’s cloud service provider.AWS.EKS.DescribeCluster.connectorConfig.roleArn— The Amazon Resource Name (ARN) of the role to communicate with services from the connected Kubernetes cluster.AWS.EKS.DescribeCluster.health.issues— An object representing the health issues of your local Amazon EKS cluster on an Amazon Web Services Outpost.AWS.EKS.DescribeCluster.outpostConfig.outpostArns— An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost.AWS.EKS.DescribeCluster.outpostConfig.controlPlaneInstanceType— The Amazon EC2 instance type used for the control plane.AWS.EKS.DescribeCluster.outpostConfig.controlPlanePlacement— An object representing the placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost.AWS.EKS.DescribeCluster.accessConfig.bootstrapClusterCreatorAdminPermissions— Specifies whether or not the cluster creator IAM principal was set as a cluster admin access entry during cluster creation time.AWS.EKS.DescribeCluster.accessConfig.authenticationMode— The current authentication mode of the cluster.AWS.IAM.Roles.RoleName— The friendly name that identifies the role.AWS.IAM.Roles.RoleId— The stable and unique string identifying the role.AWS.IAM.Roles.Arn— The Amazon Resource Name (ARN) specifying the role.AWS.IAM.Roles.CreateDate— The date and time, when the role was created.AWS.IAM.Roles.Path— The path to the role.AWS.IAM.Roles.AssumeRolePolicyDocument— he policy that grants an entity permission to assume the role.AWS.IAM.Roles.Description— A description of the role that you provide.AWS.IAM.Roles.MaxSessionDuration— The maximum session duration (in seconds) for the specified role.AWS.IAM.Policies.PolicyName— The friendly name (not ARN) identifying the policy.AWS.IAM.Policies.PolicyId— The stable and unique string identifying the policy.AWS.IAM.Policies.Arn— The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources.AWS.IAM.Policies.Path— The path to the policy.AWS.IAM.Policies.DefaultVersionId— The identifier for the version of the policy that is set as the default version.AWS.IAM.Policies.Description— A friendly description of the policy.AWS.IAM.Policies.CreateDate— The date and time, in ISO 8601 date-time format , when the policy was created.AWS.IAM.Policies.UpdateDate— The date and time, in ISO 8601 date-time format , when the policy was last updated.AWS.EKS.CreateAccessEntry.clusterName— The name of the cluster.AWS.EKS.CreateAccessEntry.principalArn— The ARN of the IAM principal for the access entry.AWS.EKS.CreateAccessEntry.kubernetesGroups— A list of names that you’ve specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects.AWS.EKS.CreateAccessEntry.accessEntryArn— The ARN of the access entry.AWS.EKS.CreateAccessEntry.createdAt— The creation date of the object.AWS.EKS.CreateAccessEntry.modifiedAt— The date and time for the last modification to the object.AWS.EKS.CreateAccessEntry.tags— A dictionary containing metadata for categorization and organization.AWS.EKS.CreateAccessEntry.username— The name of a user that can authenticate to the cluster.AWS.EKS.CreateAccessEntry.type— The type of the access entry.AWS.EKS.AssociatedAccessPolicy.clusterName— The name of your cluster.AWS.EKS.AssociatedAccessPolicy.principalArn— The ARN of the IAM principal for the AccessEntry.AWS.EKS.AssociatedAccessPolicy.policyArn— The ARN of the AccessPolicy.AWS.EKS.AssociatedAccessPolicy.associatedAt— The date and time the AccessPolicy was associated with an AccessEntry.AWS.EKS.AssociatedAccessPolicy.modifiedAt— The date and time for the last modification to the object.AWS.EKS.AssociatedAccessPolicy.accessScope.type— The scope type of an access policy.AWS.EKS.AssociatedAccessPolicy.accessScope.namespaces— A Kubernetes namespace that an access policy is scoped to.AWS.EKS.UpdateAccessEntry.clusterName— The name of your cluster.AWS.EKS.UpdateAccessEntry.principalArn— The ARN of the IAM principal for the access entry.AWS.EKS.UpdateAccessEntry.kubernetesGroups— A list of names that you’ve specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects.AWS.EKS.UpdateAccessEntry.accessEntryArn— The ARN of the access entry.AWS.EKS.UpdateAccessEntry.createdAt— The creation date of the object.AWS.EKS.UpdateAccessEntry.modifiedAt— The date and time for the last modification to the object.AWS.EKS.UpdateAccessEntry.tags— Metadata that assists with categorization and organization. Each tag consists of a key and an optional value.AWS.EKS.UpdateAccessEntry.username— The name of a user that can authenticate to your cluster.AWS.EKS.UpdateAccessEntry.type— The type of the access entry.AWS.Lambda.Layers.LayerVersionArn— The ARN of the layer version.AWS.Lambda.Layers.LayerArn— The ARN of the layer.AWS.Lambda.Layers.Description— The description of the version.AWS.Lambda.Layers.CreatedDate— The date that the layer version was created, in ISO-8601 format (YYYY-MM-DDThh:mm:ss.sTZD).AWS.Lambda.Layers.Version— The version number.AWS.Lambda.Layers.CompatibleRuntimes— The layer’s compatible runtimes.AWS.Lambda.Layers.CompatibleArchitectures— The layer’s compatible architectures.AWS.Lambda.Functions.FunctionName— The name of the function.AWS.Lambda.Functions.FunctionArn— The function’s Amazon Resource Name (ARN).AWS.Lambda.Functions.Runtime— The identifier of the function’s runtime. Runtime is required if the deployment package is a .zip file archive.AWS.Lambda.Functions.Role— The function’s execution role.AWS.Lambda.Functions.Handler— The function that Lambda calls to begin running your function.AWS.Lambda.Functions.Description— The function’s description.AWS.Lambda.Functions.PackageType— The type of deployment package. Set to Image for container image and set Zip for .zip file archive.AWS.Lambda.Functions.LastModified— The date and time that the function was last updated, in ISO-8601 format (YYYY-MM-DDThh:mm:ss.sTZD).AWS.Lambda.Functions.Timeout— The amount of time in seconds that Lambda allows a function to run before stopping it.AWS.Lambda.Functions.VpcConfig.SubnetIds— A list of VPC subnet IDs.AWS.Lambda.Functions.VpcConfig.SecurityGroupIds— A list of VPC security group IDs.AWS.Lambda.Functions.VpcConfig.VpcId— The ID of the VPC.AWS.Lambda.Functions.VpcConfig.Ipv6AllowedForDualStack— Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets.AWS.EKS.UpdateCluster.clusterName— The name of the cluster.AWS.EKS.UpdateCluster.id— The ID of the update.AWS.EKS.UpdateCluster.status— The status of the update.AWS.EKS.UpdateCluster.type— The type of the update.AWS.EKS.UpdateCluster.params— The parameters of the update.AWS.EKS.UpdateCluster.createdAt— The creation date of the object.File.Name— The name of the file.File.EntryID— The entry ID of the file.File.Type— The file type.File.Extension— The file extension.File.SHA256— The SHA256 hash of the file.ZipFile.ZippedFile— The zipped file.AWS.EC2.Vpcs.VpcEndpoint.VpcEndpointId— The ID of the endpoint.AWS.EC2.Vpcs.VpcEndpoint.State— The state of the VPC endpoint.AWS.EC2.Vpcs.VpcEndpoint.ServiceName— The service name of the VPC endpoint.AWS.EC2.Vpcs.VpcEndpoint.VpcId— The ID of the VPC to which the endpoint is associated.AWS.EC2.Vpcs.VpcEndpoint.EndpointType— The type of the VPC endpoint.AWS.EC2.Vpcs.VpcId— The ID of the VPC.AWS.EC2.Vpcs.AccountId— The ID of the AWS account with which the EC2 instance is associated. This key is only present when the parameter "AWS organization accounts" is provided.AWS.EC2.Vpcs.State— The current state of the VPC.AWS.EC2.Vpcs.CidrBlock— The primary IPv4 CIDR block for the VPC.AWS.EC2.Vpcs.Tags.Key— The key of the tag.AWS.EC2.Vpcs.Tags.Value— The value of the tag.AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.AssociationId— The association ID for the IPv6 CIDR block.AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlock— The IPv6 CIDR block.AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State— The state of the CIDR block.AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage— A message about the status of the CIDR block, if applicable.AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.AssociationId— The association ID for the IPv4 CIDR block.AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlock— The IPv4 CIDR block.AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.State— The state of the CIDR block.AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.StatusMessage— A message about the status of the CIDR block, if applicable.AWS.EC2.SecurityGroups.GroupName— The name of the security group.AWS.EC2.SecurityGroups.Description— A description for the security group.AWS.EC2.SecurityGroups.VpcId— The ID of the VPC.AWS.EC2.SecurityGroups.GroupId— The ID of the security group.AWS.EC2.SecurityGroups.AccountId— The ID of the AWS account with which the EC2 instance is associated. This key is only present when the parameter "AWS organization accounts" is provided.ErrorEntries— Contents of the errors associated with the entry/entries.
Commands used
aws-ec2-authorize-security-group-ingress-rule
aws-ec2-create-security-group
aws-ec2-create-vpc-endpoint
aws-ec2-describe-vpcs
aws-eks-associate-access-policy
aws-eks-create-access-entry
aws-eks-describe-cluster
aws-eks-update-access-entry
aws-eks-update-cluster-config
aws-iam-attach-policy
aws-iam-create-policy
aws-iam-create-role
aws-lambda-create-function
aws-lambda-publish-layer-version
Flowchart
id: Function Deployment - AWS version: -1 name: Function Deployment - AWS description: |- This playbook automates the deployment of an AWS Lambda function to manage resources within an Amazon EKS cluster. It ensures that all necessary configurations are created, updated, and verified. ### Setup - **Describe EKS Cluster**: Gather essential details of the EKS cluster. - **Create IAM Role**: Set up a new IAM role for the Lambda function. - **Create and Attach Policy**: Define and attach a policy to the IAM role to grant necessary permissions. ### Authentication Mode Check - **Verify Authentication Mode**: Ensure the current authentication mode allows API access. - **If not**: Update the cluster authentication mode to permit API access. ### Access Entry Configuration - **Create Access Entry**: Establish a new access entry in the EKS cluster. - **Associate Access Policy**: Link the access policy with the created access entry. - **Update Access Entry**: Apply the latest configurations to the access entry. ### VPC and Security Group Setup - **Describe VPCs**: Identify the appropriate VPC for the Lambda function. - **Create Security Group**: Define a security group to manage Lambda function traffic. - **Set Ingress Rules**: Configure ingress rules for the security group. ### VPC Endpoint Creation - **Create VPC Endpoint for eks-auth**: Establish a VPC endpoint for EKS authentication. - **Check for Errors**: Verify if there are any errors during the creation of the VPC endpoint. - **If errors**: Handle and log them. - **Verify VPC Endpoint Existence**: Ensure the VPC endpoint already exists. - **If exists**: Proceed with the next steps. ### Lambda Function Deployment - **Download Kubernetes Library**: Fetch the necessary Kubernetes library. - **Publish AWS Lambda Layer**: Publish a new layer version for the AWS Lambda function. - **Create Lambda Code**: Develop the Lambda function code. - **Zip Lambda Code**: Compress the Lambda function code for deployment. - **Create AWS Lambda Function**: Deploy the Lambda function using the zipped code. ### Resolution - **Final Verification**: Ensure all operations have been successfully completed. - **Completion**: Confirm the deployment process is finished, ensuring robust management of EKS authentication through AWS Lambda. This playbook provides a comprehensive, automated approach to deploying an AWS Lambda function for managing resources within an EKS cluster, efficiently handling all configurations and potential errors. ### Required Integration #### AWS IAM (Identity and Access Management) - [AWS IAM API Documentation](https://docs.aws.amazon.com/IAM/latest/APIReference/Welcome.html) - [Cortex XSOAR AWS IAM Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSIAM/) #### AWS EC2 (Elastic Compute Cloud) - [AWS EC2 API Documentation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html) - [Cortex XSOAR AWS EC2 Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSEC2/) #### AWS EKS (Elastic Kubernetes Service) - [AWS EKS API Documentation](https://docs.aws.amazon.com/eks/latest/APIReference/Welcome.html) - [Cortex XSOAR AWS EKS Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSEKS/) #### AWS Lambda - [AWS Lambda API Documentation](https://docs.aws.amazon.com/lambda/latest/dg/API_Reference.html) - [Cortex XSOAR AWS Lambda Integration](https://cortex.marketplace.pan.dev/marketplace/details/AWSLambda/). starttaskid: "0" tasks: "0": id: "0" taskid: 54dd5378-1342-4d82-84fa-99649b7926f7 type: start task: id: 54dd5378-1342-4d82-84fa-99649b7926f7 version: -1 name: "" iscommand: false brand: "" description: '' nexttasks: '#none#': - "1" separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 40 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "1": id: "1" taskid: 2fa1b9d8-7711-49e3-80cd-e572b487aebf type: regular task: id: 2fa1b9d8-7711-49e3-80cd-e572b487aebf version: -1 name: EKS - Describe Cluster description: Describes an Amazon EKS cluster. script: '|||aws-eks-describe-cluster' type: regular iscommand: true brand: "" nexttasks: '#none#': - "2" scriptarguments: cluster_name: simple: ${inputs.ClusterName} region: simple: ${inputs.region} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 170 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "2": id: "2" taskid: 935b9483-60e9-44e2-8571-358a764a0fb3 type: regular task: id: 935b9483-60e9-44e2-8571-358a764a0fb3 version: -1 name: Create a role for the Lambda function description: Creates a new role for your AWS account. script: '|||aws-iam-create-role' type: regular iscommand: true brand: "" nexttasks: '#none#': - "3" scriptarguments: assumeRolePolicyDocument: simple: |- { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } } roleName: simple: ${inputs.LambdaRoleName} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 340 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "3": id: "3" taskid: b647b62d-4c70-47d1-8fe5-6551ccf7b334 type: regular task: id: b647b62d-4c70-47d1-8fe5-6551ccf7b334 version: -1 name: Create policy description: Creates a new managed policy for your AWS account. This operation creates a policy version with a version identifier of v1 and sets v1 as the policy's default version. script: '|||aws-iam-create-policy' type: regular iscommand: true brand: "" nexttasks: '#none#': - "4" scriptarguments: policyDocument: simple: |- { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeInstances", "ec2:AttachNetworkInterface" ], "Resource": "*" } ] } policyName: simple: ${inputs.LambdaPolicyName} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 500 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "4": id: "4" taskid: 2cef0fd3-6d20-4f8a-8e7d-3fa27d1638ae type: regular task: id: 2cef0fd3-6d20-4f8a-8e7d-3fa27d1638ae version: -1 name: Attach the policy to the Lambda role description: Attaches the specified managed policy to the specified IAM Entity. script: '|||aws-iam-attach-policy' type: regular iscommand: true brand: "" nexttasks: '#none#': - "11" scriptarguments: entityName: simple: ${AWS.IAM.Roles.RoleName} policyArn: simple: ${AWS.IAM.Policies.Arn} type: simple: Role separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 660 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "5": id: "5" taskid: a59535eb-3371-4fa5-8777-14a41c7bf807 type: regular task: id: a59535eb-3371-4fa5-8777-14a41c7bf807 version: -1 name: EKS - Create access entry description: Creates an access entry. script: '|||aws-eks-create-access-entry' type: regular iscommand: true brand: "" nexttasks: '#none#': - "6" scriptarguments: cluster_name: simple: ${inputs.ClusterName} principal_arn: simple: ${AWS.IAM.Roles.Arn} region: simple: ${inputs.region} retry-count: simple: "1" retry-interval: simple: "5" separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 1160 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "6": id: "6" taskid: 5e11c0d3-f12f-43f6-884b-1b07e5b580ae type: regular task: id: 5e11c0d3-f12f-43f6-884b-1b07e5b580ae version: -1 name: EKS - Associate access policy description: Describes an Amazon EKS cluster. script: '|||aws-eks-associate-access-policy' type: regular iscommand: true brand: "" nexttasks: '#none#': - "7" scriptarguments: cluster_name: simple: ${inputs.ClusterName} policy_arn: simple: arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy principal_arn: simple: ${AWS.IAM.Roles.Arn} region: simple: ${inputs.region} type: simple: cluster separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 1320 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "7": id: "7" taskid: 61b4a2bb-6609-4701-8dd3-ba257660ab25 type: regular task: id: 61b4a2bb-6609-4701-8dd3-ba257660ab25 version: -1 name: EKS - Update access entry description: Updates an access entry. script: '|||aws-eks-update-access-entry' type: regular iscommand: true brand: "" nexttasks: '#none#': - "18" scriptarguments: cluster_name: simple: ${inputs.ClusterName} kubernetes_groups: simple: cluster-admin principal_arn: simple: ${AWS.IAM.Roles.Arn} region: simple: ${inputs.region} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 1480 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "8": id: "8" taskid: 45528df7-bb7f-42c5-8bd0-761a893853fb type: regular task: id: 45528df7-bb7f-42c5-8bd0-761a893853fb version: -1 name: AWS Lambda - Publish layer version description: Creates an Lambda layer from a ZIP archive. script: '|||aws-lambda-publish-layer-version' type: regular iscommand: true brand: "" nexttasks: '#none#': - "24" scriptarguments: compatible-architectures: simple: ${inputs.LayerArchitecture} compatible-runtimes: simple: ${inputs.LayerRuntime} layer-name: simple: ${inputs.LayerName} region: simple: ${inputs.region} zip-file: complex: root: File filters: - - operator: containsString left: value: simple: File.Name iscontext: true right: value: simple: inputs.LibraryName iscontext: true ignorecase: true accessor: EntryID separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 2900 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "10": id: "10" taskid: a13603f8-4bba-4f72-8d38-d02255a1e429 type: title task: id: a13603f8-4bba-4f72-8d38-d02255a1e429 version: -1 name: Done type: title iscommand: false brand: "" description: '' separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 3710 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "11": id: "11" taskid: 634c042a-b835-496e-83a9-37cde721742a type: condition task: id: 634c042a-b835-496e-83a9-37cde721742a version: -1 name: Check if the authentication mode allows API description: Checks if the cluster allows authentication via API. type: condition iscommand: false brand: "" nexttasks: '#default#': - "12" "yes": - "5" separatecontext: false conditions: - label: "yes" condition: - - operator: containsGeneral left: value: simple: AWS.EKS.DescribeCluster.accessConfig.authenticationMode iscontext: true right: value: simple: API ignorecase: true continueonerrortype: "" view: |- { "position": { "x": 450, "y": 820 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "12": id: "12" taskid: 7fb729bd-cda7-4087-8e76-f68a2ec88100 type: regular task: id: 7fb729bd-cda7-4087-8e76-f68a2ec88100 version: -1 name: Update cluster authentication mode description: 'Updates an Amazon EKS cluster configuration. Only one type of update can be allowed. Potentially harmful: once the authentication mode was updated to ''API'' it is irreversible.' script: '|||aws-eks-update-cluster-config' type: regular iscommand: true brand: "" nexttasks: '#none#': - "5" scriptarguments: authentication_mode: simple: API_AND_CONFIG_MAP cluster_name: simple: ${inputs.ClusterName} region: simple: ${inputs.region} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 70, "y": 990 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "13": id: "13" taskid: fb201ae1-4187-4978-8190-6aee638abd62 type: regular task: id: fb201ae1-4187-4978-8190-6aee638abd62 version: -1 name: Download Kubernetes library description: The script installs a Python library using pip and archive it. scriptName: DownloadAndArchivePythonLibrary type: regular iscommand: false brand: "" nexttasks: '#none#': - "8" scriptarguments: library_name: simple: ${inputs.LibraryName} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 2740 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "14": id: "14" taskid: 2c183d15-aaf8-499f-8922-9df6eab414ca type: regular task: id: 2c183d15-aaf8-499f-8922-9df6eab414ca version: -1 name: Create the Lambda code description: | Creates a file (using the given data input or entry ID) and uploads it to the current investigation War Room. scriptName: FileCreateAndUploadV2 type: regular iscommand: false brand: "" nexttasks: '#none#': - "15" scriptarguments: data: simple: ${inputs.FunctionCode} filename: simple: lambda_function.py separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 3190 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "15": id: "15" taskid: 0399941e-47ee-459e-8aa7-60c150b1a1c6 type: regular task: id: 0399941e-47ee-459e-8aa7-60c150b1a1c6 version: -1 name: Zip Lambda code description: Zip a file and upload to war room scriptName: ZipFile type: regular iscommand: false brand: "" nexttasks: '#none#': - "23" scriptarguments: entryID: complex: root: File filters: - - operator: isEqualString left: value: simple: File.Name iscontext: true right: value: simple: lambda_function.py ignorecase: true accessor: EntryID zipName: simple: code separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 3360 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "16": id: "16" taskid: fedbbd4d-58b3-4e54-84f1-29b233743f5a type: regular task: id: fedbbd4d-58b3-4e54-84f1-29b233743f5a version: -1 name: Create VPC endpoint for eks-auth description: Creates a VPC endpoint. script: '|||aws-ec2-create-vpc-endpoint' type: regular iscommand: true brand: "" nexttasks: '#none#': - "34" scriptarguments: region: simple: ${inputs.region} securityGroupIds: simple: ${AWS.EKS.DescribeCluster.resourcesVpcConfig.securityGroupIds} serviceName: simple: com.amazonaws.${inputs.region}.eks-auth subnetIds: simple: ${AWS.EKS.DescribeCluster.resourcesVpcConfig.subnetIds} vpcEndpointType: simple: Interface vpcId: simple: ${AWS.EC2.Vpcs.VpcId} separatecontext: false continueonerror: true continueonerrortype: "" view: |- { "position": { "x": 200, "y": 2180 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "18": id: "18" taskid: 2d82ee8b-6bcd-4d34-88c0-f8b1d9ceb10b type: regular task: id: 2d82ee8b-6bcd-4d34-88c0-f8b1d9ceb10b version: -1 name: Describe VPCs description: Describes one or more of your VPCs. script: '|||aws-ec2-describe-vpcs' type: regular iscommand: true brand: "" nexttasks: '#none#': - "19" scriptarguments: region: simple: ${inputs.region} vpcIds: simple: ${AWS.EKS.DescribeCluster.resourcesVpcConfig.vpcId} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 1645 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "19": id: "19" taskid: 19380d04-9017-4578-85d1-6539b235c361 type: regular task: id: 19380d04-9017-4578-85d1-6539b235c361 version: -1 name: Create security group description: Creates a security group. script: '|||aws-ec2-create-security-group' type: regular iscommand: true brand: "" nexttasks: '#none#': - "20" scriptarguments: description: simple: This security group allow the response function to communicate with the cluster groupName: simple: ${inputs.SecurityGroupName} region: simple: ${inputs.region} vpcId: simple: ${AWS.EC2.Vpcs.VpcId} separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 1810 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "20": id: "20" taskid: b3871919-30b5-4e02-8fcd-fecaeaead4e8 type: regular task: id: b3871919-30b5-4e02-8fcd-fecaeaead4e8 version: -1 name: Create an ingress rule for the security group description: Adds ingress rule to a security group. script: '|||aws-ec2-authorize-security-group-ingress-rule' type: regular iscommand: true brand: "" nexttasks: '#none#': - "16" - "22" scriptarguments: cidrIp: simple: ${AWS.EC2.Vpcs.CidrBlock} fromPort: simple: "443" groupId: simple: ${AWS.EC2.SecurityGroups.GroupId} ipProtocol: simple: tcp region: simple: ${inputs.region} toPort: simple: "443" separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 1980 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "22": id: "22" taskid: 7a865610-19c6-415a-89d1-ae1d9f558f10 type: regular task: id: 7a865610-19c6-415a-89d1-ae1d9f558f10 version: -1 name: Create VPC endpoint for eks-auth description: Creates a VPC endpoint. script: '|||aws-ec2-create-vpc-endpoint' type: regular iscommand: true brand: "" nexttasks: '#none#': - "31" scriptarguments: region: simple: ${inputs.region} securityGroupIds: simple: ${AWS.EKS.DescribeCluster.resourcesVpcConfig.securityGroupIds} serviceName: simple: com.amazonaws.${inputs.region}.eks subnetIds: simple: ${AWS.EKS.DescribeCluster.resourcesVpcConfig.subnetIds} vpcEndpointType: simple: Interface vpcId: simple: ${AWS.EC2.Vpcs.VpcId} separatecontext: false continueonerror: true continueonerrortype: "" view: |- { "position": { "x": 700, "y": 2180 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "23": id: "23" taskid: 25d80d46-e3c7-4fdc-8ad4-67d04e22dfd5 type: regular task: id: 25d80d46-e3c7-4fdc-8ad4-67d04e22dfd5 version: -1 name: AWS Lambda - Create function description: Creates a Lambda function. To create a function, you need a deployment package and an execution role. script: '|||aws-lambda-create-function' type: regular iscommand: true brand: "" nexttasks: '#none#': - "10" scriptarguments: code: complex: root: File filters: - - operator: isEqualString left: value: simple: File.Name iscontext: true right: value: simple: code.zip ignorecase: true accessor: EntryID functionName: simple: ${inputs.FunctionName} handler: simple: ${inputs.FunctionHandler} layers: simple: ${AWS.Lambda.Layers.LayerVersionArn} packageType: simple: Zip region: simple: ${inputs.region} role: simple: ${AWS.IAM.Roles.Arn} runtime: simple: ${inputs.FunctionRuntime} vpcConfig: complex: root: AWS.EKS.DescribeCluster accessor: resourcesVpcConfig transformers: - operator: IgnoreFieldsFromJson args: fields: value: simple: clusterSecurityGroupId,endpointPrivateAccess,endpointPublicAccess,publicAccessCidrs,vpcId json_object: {} - operator: Stringify - operator: replace args: limit: {} replaceWith: value: simple: SecurityGroupIds toReplace: value: simple: securityGroupIds - operator: replace args: limit: {} replaceWith: value: simple: SubnetIds toReplace: value: simple: subnetIds separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 3530 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "24": id: "24" taskid: 0d583674-cc5b-4a9d-8398-e5649245ac0e type: title task: id: 0d583674-cc5b-4a9d-8398-e5649245ac0e version: -1 name: Create Function type: title iscommand: false brand: "" description: '' nexttasks: '#none#': - "14" separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 450, "y": 3060 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "31": id: "31" taskid: f00e38d5-c3f5-4d1d-8642-34550bad0aab type: regular task: id: f00e38d5-c3f5-4d1d-8642-34550bad0aab version: -1 name: Check the error returned for eks-auth VPC endpoint creation description: Get the error(s) associated with a given entry/entries. Use ${lastCompletedTaskEntries} to check the previous task entries. The automation will return an array of the error contents from those entries. scriptName: GetErrorsFromEntry type: regular iscommand: false brand: "" nexttasks: '#none#': - "32" scriptarguments: entry_id: simple: ${lastCompletedTaskEntries} extend-context: simple: ErrorEntries.eksAuth= ignore-outputs: simple: "true" separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 700, "y": 2350 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "32": id: "32" taskid: 55fce217-fa07-432c-8bf7-8e327e33f763 type: condition task: id: 55fce217-fa07-432c-8bf7-8e327e33f763 version: -1 name: Check if the VPC endpoint already exists description: Checks if a VPC endpoint for eks-auth already exists. type: condition iscommand: false brand: "" nexttasks: '#default#': - "33" "yes": - "13" separatecontext: false conditions: - label: "yes" condition: - - operator: containsString left: value: simple: ErrorEntries.eksAuth iscontext: true right: value: simple: conflicting continueonerrortype: "" view: |- { "position": { "x": 700, "y": 2520 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "33": id: "33" taskid: ee2a8892-22db-46c2-8fdd-4dd5271a8529 type: regular task: id: ee2a8892-22db-46c2-8fdd-4dd5271a8529 version: -1 name: VPC endpoint for eks-auth creation error description: Prints an error entry with a given message. scriptName: PrintErrorEntry type: regular iscommand: false brand: "" nexttasks: '#none#': - "10" scriptarguments: message: simple: |- Unable to create a VPC endpoint for eks-auth due to the following error: ${ErrorEntries.eksAuth} separatecontext: false continueonerror: true continueonerrortype: "" view: |- { "position": { "x": 1070, "y": 2740 } } note: false timertriggers: [] ignoreworker: false fieldMapping: - incidentfield: Error Message output: simple: VPC Endpoint Creation Failed skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "34": id: "34" taskid: b4b59d4a-77f1-49cc-8852-0c8fbe92178d type: regular task: id: b4b59d4a-77f1-49cc-8852-0c8fbe92178d version: -1 name: Check the error returned for eks VPC endpoint creation description: Get the error(s) associated with a given entry/entries. Use ${lastCompletedTaskEntries} to check the previous task entries. The automation will return an array of the error contents from those entries. scriptName: GetErrorsFromEntry type: regular iscommand: false brand: "" nexttasks: '#none#': - "35" scriptarguments: entry_id: simple: ${lastCompletedTaskEntries} extend-context: simple: ErrorEntries.eks= ignore-outputs: simple: "true" separatecontext: false continueonerrortype: "" view: |- { "position": { "x": 200, "y": 2350 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "35": id: "35" taskid: 81bbd239-7d66-4dba-8916-574494b0fdb0 type: condition task: id: 81bbd239-7d66-4dba-8916-574494b0fdb0 version: -1 name: Check if the VPC endpoint already exists description: Checks if a VPC endpoint for eks already exists. type: condition iscommand: false brand: "" nexttasks: '#default#': - "36" "yes": - "13" separatecontext: false conditions: - label: "yes" condition: - - operator: containsString left: value: simple: ErrorEntries.eks iscontext: true right: value: simple: conflicting continueonerrortype: "" view: |- { "position": { "x": 200, "y": 2520 } } note: false timertriggers: [] ignoreworker: false skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false "36": id: "36" taskid: d1ccb111-1357-494a-8c5b-314bb9a13c19 type: regular task: id: d1ccb111-1357-494a-8c5b-314bb9a13c19 version: -1 name: VPC endpoint for eks creation error description: Prints an error entry with a given message. scriptName: PrintErrorEntry type: regular iscommand: false brand: "" nexttasks: '#none#': - "10" scriptarguments: message: simple: |- Unable to create a VPC endpoint for eks due to the following error: ${ErrorEntries.eks} separatecontext: false continueonerror: true continueonerrortype: "" view: |- { "position": { "x": -180, "y": 2740 } } note: false timertriggers: [] ignoreworker: false fieldMapping: - incidentfield: Error Message output: simple: VPC Endpoint Creation Failed skipunavailable: false quietmode: 0 isoversize: false isautoswitchedtoquietmode: false view: |- { "linkLabelsPosition": { "11_5_yes": 0.17, "32_13_yes": 0.38, "35_13_yes": 0.43 }, "paper": { "dimensions": { "height": 3735, "width": 1630, "x": -180, "y": 40 } } } inputs: - key: ClusterName value: {} required: false description: The name of the cluster. playbookInputQuery: - key: region value: {} required: false description: The region of the cluster. playbookInputQuery: - key: FunctionName value: {} required: false description: The name of the Lambda function. playbookInputQuery: - key: FunctionCode value: {} required: false description: Entry ID of the uploaded base64-encoded contents of the deployment package. Amazon Web Services SDK and CLI clients handle the encoding for you. playbookInputQuery: - key: FunctionRuntime value: {} required: false description: "The runtime environment for the function.\t" playbookInputQuery: - key: FunctionHandler value: {} required: false description: "The name of the method within your code that Lambda calls to execute your function.\t" playbookInputQuery: - key: LayerName value: {} required: false description: The name to assign to the new Lambda layer. playbookInputQuery: - key: LayerRuntime value: {} required: false description: "The name of the method within your code that Lambda calls to execute your function.\t" playbookInputQuery: - key: LayerArchitecture value: {} required: false description: "A list of compatible architectures.\t" playbookInputQuery: - key: LibraryName value: {} required: false description: "The Python library to download and attach to the Lambda Function. \ne.g.\nTo be able to use the kubernetes library, use 'kubernetes' and the script will download and pack its files." playbookInputQuery: - key: LambdaRoleName value: {} required: false description: The lambda role name to create. playbookInputQuery: - key: LambdaPolicyName value: {} required: false description: The lambda policy name to create. playbookInputQuery: - key: SecurityGroupName value: {} required: false description: The security group name to create. playbookInputQuery: inputSections: - inputs: - ClusterName - region name: General (Inputs group) description: Generic group for inputs - inputs: - FunctionName - FunctionCode - FunctionRuntime - FunctionHandler - LayerName - LayerRuntime - LayerArchitecture - LibraryName name: FunctionParameters description: This group holds inputs related to the function creation. - inputs: - LambdaRoleName - LambdaPolicyName name: IAMParameters description: This group holds inputs related to IAM. - inputs: - SecurityGroupName name: EC2Parameters description: This group holds inputs related to EC2. outputSections: - outputs: - AWS.EKS.DescribeCluster.name - AWS.EKS.DescribeCluster.arn - AWS.EKS.DescribeCluster.createdAt - AWS.EKS.DescribeCluster.version - AWS.EKS.DescribeCluster.endpoint - AWS.EKS.DescribeCluster.roleArn - AWS.EKS.DescribeCluster.identity - AWS.EKS.DescribeCluster.status - AWS.EKS.DescribeCluster.clientRequestToken - AWS.EKS.DescribeCluster.platformVersion - AWS.EKS.DescribeCluster.tags - AWS.EKS.DescribeCluster.id - AWS.EKS.DescribeCluster.resourcesVpcConfig.subnetIds - AWS.EKS.DescribeCluster.resourcesVpcConfig.securityGroupIds - AWS.EKS.DescribeCluster.resourcesVpcConfig.clusterSecurityGroupId - AWS.EKS.DescribeCluster.resourcesVpcConfig.vpcId - AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPublicAccess - AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPrivateAccess - AWS.EKS.DescribeCluster.resourcesVpcConfig.publicAccessCidrs - AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv4Cidr - AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv6Cidr - AWS.EKS.DescribeCluster.kubernetesNetworkConfig.ipFamily - AWS.EKS.DescribeCluster.logging.clusterLogging - AWS.EKS.DescribeCluster.certificateAuthority.data - AWS.EKS.DescribeCluster.encryptionConfig.resources - AWS.EKS.DescribeCluster.encryptionConfig.provider - AWS.EKS.DescribeCluster.connectorConfig.activationId - AWS.EKS.DescribeCluster.connectorConfig.activationCode - AWS.EKS.DescribeCluster.connectorConfig.activationExpiry - AWS.EKS.DescribeCluster.connectorConfig.provider - AWS.EKS.DescribeCluster.connectorConfig.roleArn - AWS.EKS.DescribeCluster.health.issues - AWS.EKS.DescribeCluster.outpostConfig.outpostArns - AWS.EKS.DescribeCluster.outpostConfig.controlPlaneInstanceType - AWS.EKS.DescribeCluster.outpostConfig.controlPlanePlacement - AWS.EKS.DescribeCluster.accessConfig.bootstrapClusterCreatorAdminPermissions - AWS.EKS.DescribeCluster.accessConfig.authenticationMode - AWS.IAM.Roles.RoleName - AWS.IAM.Roles.RoleId - AWS.IAM.Roles.Arn - AWS.IAM.Roles.CreateDate - AWS.IAM.Roles.Path - AWS.IAM.Roles.AssumeRolePolicyDocument - AWS.IAM.Roles.Description - AWS.IAM.Roles.MaxSessionDuration - AWS.IAM.Policies.PolicyName - AWS.IAM.Policies.PolicyId - AWS.IAM.Policies.Arn - AWS.IAM.Policies.Path - AWS.IAM.Policies.DefaultVersionId - AWS.IAM.Policies.Description - AWS.IAM.Policies.CreateDate - AWS.IAM.Policies.UpdateDate - AWS.EKS.CreateAccessEntry.clusterName - AWS.EKS.CreateAccessEntry.principalArn - AWS.EKS.CreateAccessEntry.kubernetesGroups - AWS.EKS.CreateAccessEntry.accessEntryArn - AWS.EKS.CreateAccessEntry.createdAt - AWS.EKS.CreateAccessEntry.modifiedAt - AWS.EKS.CreateAccessEntry.tags - AWS.EKS.CreateAccessEntry.username - AWS.EKS.CreateAccessEntry.type - AWS.EKS.AssociatedAccessPolicy.clusterName - AWS.EKS.AssociatedAccessPolicy.principalArn - AWS.EKS.AssociatedAccessPolicy.policyArn - AWS.EKS.AssociatedAccessPolicy.associatedAt - AWS.EKS.AssociatedAccessPolicy.modifiedAt - AWS.EKS.AssociatedAccessPolicy.accessScope.type - AWS.EKS.AssociatedAccessPolicy.accessScope.namespaces - AWS.EKS.UpdateAccessEntry.clusterName - AWS.EKS.UpdateAccessEntry.principalArn - AWS.EKS.UpdateAccessEntry.kubernetesGroups - AWS.EKS.UpdateAccessEntry.accessEntryArn - AWS.EKS.UpdateAccessEntry.createdAt - AWS.EKS.UpdateAccessEntry.modifiedAt - AWS.EKS.UpdateAccessEntry.tags - AWS.EKS.UpdateAccessEntry.username - AWS.EKS.UpdateAccessEntry.type - AWS.Lambda.Layers.LayerVersionArn - AWS.Lambda.Layers.LayerArn - AWS.Lambda.Layers.Description - AWS.Lambda.Layers.CreatedDate - AWS.Lambda.Layers.Version - AWS.Lambda.Layers.CompatibleRuntimes - AWS.Lambda.Layers.CompatibleArchitectures - AWS.Lambda.Functions.FunctionName - AWS.Lambda.Functions.FunctionArn - AWS.Lambda.Functions.Runtime - AWS.Lambda.Functions.Role - AWS.Lambda.Functions.Handler - AWS.Lambda.Functions.Description - AWS.Lambda.Functions.PackageType - AWS.Lambda.Functions.LastModified - AWS.Lambda.Functions.Timeout - AWS.Lambda.Functions.VpcConfig.SubnetIds - AWS.Lambda.Functions.VpcConfig.SecurityGroupIds - AWS.Lambda.Functions.VpcConfig.VpcId - AWS.Lambda.Functions.VpcConfig.Ipv6AllowedForDualStack - AWS.EKS.UpdateCluster.clusterName - AWS.EKS.UpdateCluster.id - AWS.EKS.UpdateCluster.status - AWS.EKS.UpdateCluster.type - AWS.EKS.UpdateCluster.params - AWS.EKS.UpdateCluster.createdAt - File.Name - File.EntryID - File.Type - File.Extension - File.SHA256 - ZipFile.ZippedFile - AWS.EC2.Vpcs.VpcEndpoint.VpcEndpointId - AWS.EC2.Vpcs.VpcEndpoint.State - AWS.EC2.Vpcs.VpcEndpoint.ServiceName - AWS.EC2.Vpcs.VpcEndpoint.VpcId - AWS.EC2.Vpcs.VpcEndpoint.EndpointType - AWS.EC2.Vpcs.VpcId - AWS.EC2.Vpcs.AccountId - AWS.EC2.Vpcs.State - AWS.EC2.Vpcs.CidrBlock - AWS.EC2.Vpcs.Tags.Key - AWS.EC2.Vpcs.Tags.Value - AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.AssociationId - AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlock - AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State - AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage - AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.AssociationId - AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlock - AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.State - AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.StatusMessage - AWS.EC2.SecurityGroups.GroupName - AWS.EC2.SecurityGroups.Description - AWS.EC2.SecurityGroups.VpcId - AWS.EC2.SecurityGroups.GroupId - AWS.EC2.SecurityGroups.AccountId - ErrorEntries name: General (Outputs group) description: Generic group for outputs outputs: - contextPath: AWS.EKS.DescribeCluster.name description: The name of your cluster. - contextPath: AWS.EKS.DescribeCluster.arn description: The Amazon Resource Name (ARN) of the cluster. - contextPath: AWS.EKS.DescribeCluster.createdAt description: The creation date of the object. - contextPath: AWS.EKS.DescribeCluster.version description: The Kubernetes server version for the cluster. - contextPath: AWS.EKS.DescribeCluster.endpoint description: The endpoint for your Kubernetes API server. - contextPath: AWS.EKS.DescribeCluster.roleArn description: The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to Amazon Web Services API operations on your behalf. - contextPath: AWS.EKS.DescribeCluster.identity description: The identity provider information for the cluster. - contextPath: AWS.EKS.DescribeCluster.status description: The current status of the cluster. - contextPath: AWS.EKS.DescribeCluster.clientRequestToken description: A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. - contextPath: AWS.EKS.DescribeCluster.platformVersion description: The platform version of your Amazon EKS cluster. - contextPath: AWS.EKS.DescribeCluster.tags description: A dictionary containing metadata for categorization and organization. - contextPath: AWS.EKS.DescribeCluster.id description: The ID of your local Amazon EKS cluster on an Amazon Web Services Outpost. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.subnetIds description: The subnets associated with your cluster. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.securityGroupIds description: The security groups associated with the cross-account elastic network interfaces that are used to allow communication between your nodes and the Kubernetes control plane. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.clusterSecurityGroupId description: The cluster security group that was created by Amazon EKS for the cluster. Managed node groups use this security group for control-plane-to-data-plane communication. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.vpcId description: The VPC associated with your cluster. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPublicAccess description: Whether the public API server endpoint is enabled. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.endpointPrivateAccess description: This parameter indicates whether the Amazon EKS private API server endpoint is enabled. - contextPath: AWS.EKS.DescribeCluster.resourcesVpcConfig.publicAccessCidrs description: The CIDR blocks that are allowed access to your cluster’s public Kubernetes API server endpoint. - contextPath: AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv4Cidr description: The CIDR block that Kubernetes Pod and Service object IP addresses are assigned from. - contextPath: AWS.EKS.DescribeCluster.kubernetesNetworkConfig.serviceIpv6Cidr description: The CIDR block that Kubernetes Pod and Service IP addresses are assigned from if you created a 1.21 or later cluster with version 1.10.1 or later of the Amazon VPC CNI add-on and specified ipv6 for ipFamily when you created the cluster. - contextPath: AWS.EKS.DescribeCluster.kubernetesNetworkConfig.ipFamily description: The IP family used to assign Kubernetes Pod and Service objects IP addresses. - contextPath: AWS.EKS.DescribeCluster.logging.clusterLogging description: The cluster control plane logging configuration for your cluster. - contextPath: AWS.EKS.DescribeCluster.certificateAuthority.data description: The Base64-encoded certificate data required to communicate with your cluster. - contextPath: AWS.EKS.DescribeCluster.encryptionConfig.resources description: Specifies the resources to be encrypted. The only supported value is secrets. - contextPath: AWS.EKS.DescribeCluster.encryptionConfig.provider description: Key Management Service (KMS) key. - contextPath: AWS.EKS.DescribeCluster.connectorConfig.activationId description: A unique ID associated with the cluster for registration purposes. - contextPath: AWS.EKS.DescribeCluster.connectorConfig.activationCode description: A unique code associated with the cluster for registration purposes. - contextPath: AWS.EKS.DescribeCluster.connectorConfig.activationExpiry description: The expiration time of the connected cluster. - contextPath: AWS.EKS.DescribeCluster.connectorConfig.provider description: The cluster’s cloud service provider. - contextPath: AWS.EKS.DescribeCluster.connectorConfig.roleArn description: The Amazon Resource Name (ARN) of the role to communicate with services from the connected Kubernetes cluster. - contextPath: AWS.EKS.DescribeCluster.health.issues description: An object representing the health issues of your local Amazon EKS cluster on an Amazon Web Services Outpost. - contextPath: AWS.EKS.DescribeCluster.outpostConfig.outpostArns description: An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. - contextPath: AWS.EKS.DescribeCluster.outpostConfig.controlPlaneInstanceType description: The Amazon EC2 instance type used for the control plane. - contextPath: AWS.EKS.DescribeCluster.outpostConfig.controlPlanePlacement description: An object representing the placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost. - contextPath: AWS.EKS.DescribeCluster.accessConfig.bootstrapClusterCreatorAdminPermissions description: Specifies whether or not the cluster creator IAM principal was set as a cluster admin access entry during cluster creation time. - contextPath: AWS.EKS.DescribeCluster.accessConfig.authenticationMode description: The current authentication mode of the cluster. - contextPath: AWS.IAM.Roles.RoleName description: The friendly name that identifies the role. - contextPath: AWS.IAM.Roles.RoleId description: The stable and unique string identifying the role. - contextPath: AWS.IAM.Roles.Arn description: The Amazon Resource Name (ARN) specifying the role. - contextPath: AWS.IAM.Roles.CreateDate description: The date and time, when the role was created. - contextPath: AWS.IAM.Roles.Path description: The path to the role. - contextPath: AWS.IAM.Roles.AssumeRolePolicyDocument description: he policy that grants an entity permission to assume the role. - contextPath: AWS.IAM.Roles.Description description: A description of the role that you provide. - contextPath: AWS.IAM.Roles.MaxSessionDuration description: The maximum session duration (in seconds) for the specified role. - contextPath: AWS.IAM.Policies.PolicyName description: The friendly name (not ARN) identifying the policy. - contextPath: AWS.IAM.Policies.PolicyId description: The stable and unique string identifying the policy. - contextPath: AWS.IAM.Policies.Arn description: The Amazon Resource Name (ARN). ARNs are unique identifiers for AWS resources. - contextPath: AWS.IAM.Policies.Path description: The path to the policy. - contextPath: AWS.IAM.Policies.DefaultVersionId description: The identifier for the version of the policy that is set as the default version. - contextPath: AWS.IAM.Policies.Description description: A friendly description of the policy. - contextPath: AWS.IAM.Policies.CreateDate description: The date and time, in ISO 8601 date-time format , when the policy was created. - contextPath: AWS.IAM.Policies.UpdateDate description: The date and time, in ISO 8601 date-time format , when the policy was last updated. - contextPath: AWS.EKS.CreateAccessEntry.clusterName description: The name of the cluster. - contextPath: AWS.EKS.CreateAccessEntry.principalArn description: The ARN of the IAM principal for the access entry. - contextPath: AWS.EKS.CreateAccessEntry.kubernetesGroups description: A list of names that you’ve specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects. - contextPath: AWS.EKS.CreateAccessEntry.accessEntryArn description: The ARN of the access entry. - contextPath: AWS.EKS.CreateAccessEntry.createdAt description: The creation date of the object. - contextPath: AWS.EKS.CreateAccessEntry.modifiedAt description: The date and time for the last modification to the object. - contextPath: AWS.EKS.CreateAccessEntry.tags description: A dictionary containing metadata for categorization and organization. - contextPath: AWS.EKS.CreateAccessEntry.username description: The name of a user that can authenticate to the cluster. - contextPath: AWS.EKS.CreateAccessEntry.type description: The type of the access entry. - contextPath: AWS.EKS.AssociatedAccessPolicy.clusterName description: The name of your cluster. - contextPath: AWS.EKS.AssociatedAccessPolicy.principalArn description: The ARN of the IAM principal for the AccessEntry. - contextPath: AWS.EKS.AssociatedAccessPolicy.policyArn description: The ARN of the AccessPolicy. - contextPath: AWS.EKS.AssociatedAccessPolicy.associatedAt description: The date and time the AccessPolicy was associated with an AccessEntry. - contextPath: AWS.EKS.AssociatedAccessPolicy.modifiedAt description: The date and time for the last modification to the object. - contextPath: AWS.EKS.AssociatedAccessPolicy.accessScope.type description: The scope type of an access policy. - contextPath: AWS.EKS.AssociatedAccessPolicy.accessScope.namespaces description: A Kubernetes namespace that an access policy is scoped to. - contextPath: AWS.EKS.UpdateAccessEntry.clusterName description: The name of your cluster. - contextPath: AWS.EKS.UpdateAccessEntry.principalArn description: The ARN of the IAM principal for the access entry. - contextPath: AWS.EKS.UpdateAccessEntry.kubernetesGroups description: A list of names that you’ve specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects. - contextPath: AWS.EKS.UpdateAccessEntry.accessEntryArn description: The ARN of the access entry. - contextPath: AWS.EKS.UpdateAccessEntry.createdAt description: The creation date of the object. - contextPath: AWS.EKS.UpdateAccessEntry.modifiedAt description: The date and time for the last modification to the object. - contextPath: AWS.EKS.UpdateAccessEntry.tags description: Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. - contextPath: AWS.EKS.UpdateAccessEntry.username description: The name of a user that can authenticate to your cluster. - contextPath: AWS.EKS.UpdateAccessEntry.type description: The type of the access entry. - contextPath: AWS.Lambda.Layers.LayerVersionArn description: The ARN of the layer version. - contextPath: AWS.Lambda.Layers.LayerArn description: The ARN of the layer. - contextPath: AWS.Lambda.Layers.Description description: The description of the version. - contextPath: AWS.Lambda.Layers.CreatedDate description: The date that the layer version was created, in ISO-8601 format (YYYY-MM-DDThh:mm:ss.sTZD). - contextPath: AWS.Lambda.Layers.Version description: The version number. - contextPath: AWS.Lambda.Layers.CompatibleRuntimes description: The layer’s compatible runtimes. - contextPath: AWS.Lambda.Layers.CompatibleArchitectures description: The layer’s compatible architectures. type: unknown - contextPath: AWS.Lambda.Functions.FunctionName description: The name of the function. - contextPath: AWS.Lambda.Functions.FunctionArn description: The function’s Amazon Resource Name (ARN). - contextPath: AWS.Lambda.Functions.Runtime description: The identifier of the function’s runtime. Runtime is required if the deployment package is a .zip file archive. - contextPath: AWS.Lambda.Functions.Role description: The function’s execution role. - contextPath: AWS.Lambda.Functions.Handler description: The function that Lambda calls to begin running your function. - contextPath: AWS.Lambda.Functions.Description description: The function’s description. - contextPath: AWS.Lambda.Functions.PackageType description: The type of deployment package. Set to Image for container image and set Zip for .zip file archive. - contextPath: AWS.Lambda.Functions.LastModified description: The date and time that the function was last updated, in ISO-8601 format (YYYY-MM-DDThh:mm:ss.sTZD). - contextPath: AWS.Lambda.Functions.Timeout description: The amount of time in seconds that Lambda allows a function to run before stopping it. - contextPath: AWS.Lambda.Functions.VpcConfig.SubnetIds description: A list of VPC subnet IDs. - contextPath: AWS.Lambda.Functions.VpcConfig.SecurityGroupIds description: A list of VPC security group IDs. - contextPath: AWS.Lambda.Functions.VpcConfig.VpcId description: The ID of the VPC. - contextPath: AWS.Lambda.Functions.VpcConfig.Ipv6AllowedForDualStack description: Allows outbound IPv6 traffic on VPC functions that are connected to dual-stack subnets. - contextPath: AWS.EKS.UpdateCluster.clusterName description: The name of the cluster. - contextPath: AWS.EKS.UpdateCluster.id description: The ID of the update. - contextPath: AWS.EKS.UpdateCluster.status description: The status of the update. - contextPath: AWS.EKS.UpdateCluster.type description: The type of the update. - contextPath: AWS.EKS.UpdateCluster.params description: The parameters of the update. - contextPath: AWS.EKS.UpdateCluster.createdAt description: The creation date of the object. - contextPath: File.Name description: The name of the file. type: String - contextPath: File.EntryID description: The entry ID of the file. type: String - contextPath: File.Type description: The file type. type: String - contextPath: File.Extension description: The file extension. type: String - contextPath: File.SHA256 description: The SHA256 hash of the file. type: String - contextPath: ZipFile.ZippedFile description: The zipped file. type: string - contextPath: AWS.EC2.Vpcs.VpcEndpoint.VpcEndpointId description: The ID of the endpoint. - contextPath: AWS.EC2.Vpcs.VpcEndpoint.State description: The state of the VPC endpoint. - contextPath: AWS.EC2.Vpcs.VpcEndpoint.ServiceName description: The service name of the VPC endpoint. - contextPath: AWS.EC2.Vpcs.VpcEndpoint.VpcId description: The ID of the VPC to which the endpoint is associated. - contextPath: AWS.EC2.Vpcs.VpcEndpoint.EndpointType description: The type of the VPC endpoint. - contextPath: AWS.EC2.Vpcs.VpcId description: The ID of the VPC. - contextPath: AWS.EC2.Vpcs.AccountId description: The ID of the AWS account with which the EC2 instance is associated. This key is only present when the parameter "AWS organization accounts" is provided. - contextPath: AWS.EC2.Vpcs.State description: The current state of the VPC. - contextPath: AWS.EC2.Vpcs.CidrBlock description: The primary IPv4 CIDR block for the VPC. - contextPath: AWS.EC2.Vpcs.Tags.Key description: The key of the tag. - contextPath: AWS.EC2.Vpcs.Tags.Value description: The value of the tag. - contextPath: AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.AssociationId description: The association ID for the IPv6 CIDR block. - contextPath: AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlock description: The IPv6 CIDR block. - contextPath: AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.State description: The state of the CIDR block. - contextPath: AWS.EC2.Vpcs.Tags.Ipv6CidrBlockAssociationSet.Ipv6CidrBlockState.StatusMessage description: A message about the status of the CIDR block, if applicable. - contextPath: AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.AssociationId description: The association ID for the IPv4 CIDR block. - contextPath: AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlock description: The IPv4 CIDR block. - contextPath: AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.State description: The state of the CIDR block. - contextPath: AWS.EC2.Vpcs.Tags.CidrBlockAssociationSet.CidrBlockState.StatusMessage description: A message about the status of the CIDR block, if applicable. - contextPath: AWS.EC2.SecurityGroups.GroupName description: The name of the security group. - contextPath: AWS.EC2.SecurityGroups.Description description: A description for the security group. - contextPath: AWS.EC2.SecurityGroups.VpcId description: The ID of the VPC. - contextPath: AWS.EC2.SecurityGroups.GroupId description: The ID of the security group. - contextPath: AWS.EC2.SecurityGroups.AccountId description: The ID of the AWS account with which the EC2 instance is associated. This key is only present when the parameter "AWS organization accounts" is provided. - contextPath: ErrorEntries description: Contents of the errors associated with the entry/entries. tests: - No tests (auto formatted) marketplaces: - xsoar - marketplacev2 - platform fromversion: 6.10.0