<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Evgenii Kliuchnikov</title>
    <description>The latest articles on DEV Community by Evgenii Kliuchnikov (@klu4ik).</description>
    <link>https://dev.to/klu4ik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1041116%2Fb09cf537-2ffb-4be5-b705-fca3f1c0571b.jpeg</url>
      <title>DEV Community: Evgenii Kliuchnikov</title>
      <link>https://dev.to/klu4ik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/klu4ik"/>
    <language>en</language>
    <item>
      <title>Troubleshooting EMR Cluster Failure: Service Role Has Insufficient EC2 Permissions</title>
      <dc:creator>Evgenii Kliuchnikov</dc:creator>
      <pubDate>Tue, 27 May 2025 14:19:17 +0000</pubDate>
      <link>https://dev.to/klu4ik/troubleshooting-emr-cluster-failure-service-role-has-insufficient-ec2-permissions-558h</link>
      <guid>https://dev.to/klu4ik/troubleshooting-emr-cluster-failure-service-role-has-insufficient-ec2-permissions-558h</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge83h5wwzyrr6mbephi5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge83h5wwzyrr6mbephi5.png" alt="Image description" width="484" height="224"&gt;&lt;/a&gt;&lt;br&gt;
If you encounter an error like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ElasticMapReduce Cluster with Id cluster-name is in state TERMINATED_WITH_ERRORS and failed to stabilize due to the following reason: {Code: VALIDATION_ERROR, Message: Service role EMR_DefaultRole has insufficient EC2 permissions}&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
This typically means your EMR service role (&lt;strong&gt;EMR_DefaultRole&lt;/strong&gt;) does not have the required permissions to launch EC2 instances for your cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Check CloudTrail for Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to AWS CloudTrail and look for &lt;strong&gt;RunInstances&lt;/strong&gt; events around the time your cluster failed.&lt;br&gt;
You may see an error like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;User: arn:aws:sts::xxx:assumed-role/EMR_DefaultRole/CCSSession is not authorized to perform: ec2:RunInstances on resource: arn:aws:ec2:us-east-1:xxx:subnet/subnet-02xxx because no identity-based policy allows the ec2:RunInstances action&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Understand the Cause&lt;/strong&gt;&lt;br&gt;
If you are using the AmazonEMRServicePolicy_v2 managed policy, it restricts EC2 actions (like RunInstances) to only those subnets (and security groups) tagged with:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Key: for-use-with-amazon-emr-managed-policies&lt;br&gt;
Value: true&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If your subnet or security group is not tagged this way, EMR cannot launch instances in it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Solution — Add the Required Tag&lt;/strong&gt;&lt;br&gt;
To fix this:&lt;/p&gt;

&lt;p&gt;Go to the AWS Console → VPC → Subnets.&lt;br&gt;
Find the subnet referenced in your EMR cluster (e.g., subnet-02cdb82893447260a).&lt;br&gt;
Add the following tag:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Key: for-use-with-amazon-emr-managed-policies&lt;br&gt;
Value: true&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Repeat for any security groups referenced by your EMR cluster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Retry Your EMR Cluster&lt;/strong&gt;&lt;br&gt;
After tagging, re-launch your EMR cluster.&lt;br&gt;
It should now have the permissions needed to launch EC2 instances.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS S3 VPC Endpoint (Доступ до S3 з приватної мережі)</title>
      <dc:creator>Evgenii Kliuchnikov</dc:creator>
      <pubDate>Wed, 08 Mar 2023 12:54:12 +0000</pubDate>
      <link>https://dev.to/klu4ik/aws-s3-vpc-endpoint-29k0</link>
      <guid>https://dev.to/klu4ik/aws-s3-vpc-endpoint-29k0</guid>
      <description>&lt;p&gt;Як ми знаємо, щоб отримати доступ до &lt;strong&gt;S3&lt;/strong&gt; бакета, наприклад з &lt;strong&gt;EC2&lt;/strong&gt; інстансу нам потрібне інтернет з'єднання.&lt;/p&gt;

&lt;p&gt;Приклад:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mrC7XAg_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygj5vs86ej3yl42rgy11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mrC7XAg_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ygj5vs86ej3yl42rgy11.png" alt="Image description" width="880" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Тобто, прибравши &lt;strong&gt;Internet Gateway&lt;/strong&gt; з цієї схеми і лишивши &lt;strong&gt;EC2&lt;/strong&gt; інстанс з'єднання з інтернетом, ми не зможемо отримати доступ до нашого &lt;strong&gt;S3&lt;/strong&gt; бакета.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cU6Z1bS_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v2b13v1o9i2f1csak2jv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cU6Z1bS_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v2b13v1o9i2f1csak2jv.png" alt="Image description" width="880" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;S3 VPC Endpoint&lt;/strong&gt; може вирішити цю проблему.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VPC Endpoint&lt;/strong&gt; - це віртуальний масштабований мережевий компонент, який ви створюєте у VPC і використовуєте як приватну точку входу до підтримуваних служб AWS і сторонніх додатків.&lt;br&gt;
В контексті AWS, &lt;strong&gt;VPC Gateway Endpoint&lt;/strong&gt; - забезпечує надійне підключення до &lt;strong&gt;AWS S3&lt;/strong&gt;, не вимагаючи доступу до Інтернету.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;За використання &lt;strong&gt;VPC Endpoint&lt;/strong&gt; додаткова плата не стягується.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3xkTKpLI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ib2bzg6509ivda35wb6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3xkTKpLI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ib2bzg6509ivda35wb6d.png" alt="Image description" width="880" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hands On:)&lt;/p&gt;

&lt;p&gt;Перейдіть до VPC сервісу в AWS консолі, перейдіть до розділу “Endpoints” та виберіть “Create endpoint”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YbKNhMdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9voobmj7ueus6d30wu7u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YbKNhMdb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9voobmj7ueus6d30wu7u.png" alt="Image description" width="880" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Service category - виберіть “&lt;em&gt;AWS services&lt;/em&gt;”.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Services - додайте фільтр:&lt;br&gt;
&lt;strong&gt;Type:&lt;/strong&gt; &lt;em&gt;Gateway&lt;/em&gt; &lt;br&gt;
Виберіть &lt;em&gt;com.amazonaws.region.s3&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;VPC - оберіть потрібну VPC в якій ви хочете створити ендпоінт.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bF6uRvkw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pe6xhq6w7na8stmqstoe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bF6uRvkw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pe6xhq6w7na8stmqstoe.png" alt="Image description" width="880" height="892"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y1cEUAW7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mkg2yvvt52eynfvan38u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y1cEUAW7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mkg2yvvt52eynfvan38u.png" alt="Image description" width="880" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Route tables&lt;/strong&gt; - виберіть таблицю маршрутизації яка буде використана для Ендпоінта.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy&lt;/strong&gt; - оберіть &lt;strong&gt;Full access&lt;/strong&gt; , щоб дозволити всі операції для будь-якого користувача чи сервісу для всіх ресурсів через VPC Endpoint, або згенеруйте свою &lt;strong&gt;Policy&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Тепер якщо ви зайдете на свій EC2 інстанс який знаходиться в приватній мережі, ви зможете підключатись до своїх s3 бакетів.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7eF8RpZl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rluzs45hb9zu58hyfnd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7eF8RpZl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rluzs45hb9zu58hyfnd4.png" alt="Image description" width="798" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>vpc</category>
    </item>
  </channel>
</rss>
