<?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: Ahiwe Onyebuchi Valentine</title>
    <description>The latest articles on DEV Community by Ahiwe Onyebuchi Valentine (@vahiwe).</description>
    <link>https://dev.to/vahiwe</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%2F569155%2Fdfc2228d-c3c7-437b-841e-08275490dcc4.jpeg</url>
      <title>DEV Community: Ahiwe Onyebuchi Valentine</title>
      <link>https://dev.to/vahiwe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vahiwe"/>
    <language>en</language>
    <item>
      <title>Upgrade Python Version on AWS Elastic Beanstalk using Pyenv</title>
      <dc:creator>Ahiwe Onyebuchi Valentine</dc:creator>
      <pubDate>Mon, 06 Mar 2023 20:09:14 +0000</pubDate>
      <link>https://dev.to/aws-builders/upgrade-python-version-on-aws-elastic-beanstalk-using-pyenv-42f1</link>
      <guid>https://dev.to/aws-builders/upgrade-python-version-on-aws-elastic-beanstalk-using-pyenv-42f1</guid>
      <description>&lt;p&gt;Hello there,&lt;/p&gt;

&lt;p&gt;Another exciting article has hit. &lt;/p&gt;

&lt;p&gt;I present to you this valuable solution where I describe some of my custom work with &lt;strong&gt;Elastic Beanstalk&lt;/strong&gt;. Recently, I got a case where the pre-built SSL library readily available with the Beanstalk Python environment was too outdated for my client's needs. In this article, I share my experience and what I did to solve the problem.&lt;/p&gt;

&lt;p&gt;Imagine that your app &lt;strong&gt;needs&lt;/strong&gt; a more current Python runtime version than the one which is readily managed within your AWS Elastic Beanstalk environment. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As &lt;strong&gt;niche&lt;/strong&gt; as this might sound, it is quite common for your app to require a more up-to-date Python runtime version than what is available in AWS Elastic Beanstalk. This becomes a blocker and is particularly important to you if your app's functionality depends on a library that is pre-built with the Python installation but is outdated in the Beanstalk environment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before you throw your hands in the air, and say, oh no!! the python version cadence is too slow for my app's needs on Elastic Beanstalk!! Well, this project provides a solution. It shows you how to deploy a Flask app on AWS Elastic Beanstalk and upgrade the server's Python version with &lt;strong&gt;Pyenv&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The code for the following project is documented in the attached repo: &lt;a href="https://github.com/vahiwe/python-pyenv-upgrade-on-elasticbeanstalk" rel="noopener noreferrer"&gt;repo&lt;/a&gt;, and I invite you to please feel free to help yourself to the buffet. You are also most welcome to keep reading for some explanation on how to use the repo.&lt;/p&gt;

&lt;p&gt;The repo includes a Flask application example for deployment on Elastic Beanstalk. To use it, follow these steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create an Elastic Beanstalk environment using the AWS Management Console or AWS CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set environment variables by editing configuration options on the Elastic Beanstalk environment dashboard. Navigate to "&lt;strong&gt;Configuration&lt;/strong&gt;" ==&amp;gt; "&lt;strong&gt;Software&lt;/strong&gt;", then "Edit". The relevant environment variables that need to be set include:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
 shell
PYTHON_VERSION: The python version that you need to be installed on the server.
PYTHONPATH: The path to the application\'s virtual environment. 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The PYTHONPATH is set by default by Elastic Beanstalk to &lt;code&gt;/var/app/venv/staging-LQM1lest/bin&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy the new application version to the Elastic Beanstalk environment using either the AWS Management Console or eb CLI with:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

eb deploy


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The images below demonstrate the BEFORE and AFTER versions of the Python installation on the AWS Elastic Beanstalk server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python Version&lt;/strong&gt;: 3.8.5. Before, the Python Version was upgraded. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fesrhx6r1460zhq4zpc05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fesrhx6r1460zhq4zpc05.png" alt="The deployment before upgrading the python version"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python Version&lt;/strong&gt;: 3.10.0. After the Python Version has been upgraded. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fskppf5wki9132sd989cb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fskppf5wki9132sd989cb.png" alt="The deployment before upgrading the python version"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;pyenv upgrade&lt;/strong&gt; is neatly handled through the code block shown below. This block can also be found in the &lt;a href="https://github.com/vahiwe/python-pyenv-upgrade-on-elasticbeanstalk" rel="noopener noreferrer"&gt;repo&lt;/a&gt; as the "&lt;strong&gt;00_upgrade_python.config&lt;/strong&gt;" file in the ".ebextensions" directory. It upgrades the server's python version using &lt;strong&gt;Pyenv&lt;/strong&gt; to the specified version set with the environment variables. &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="c"&gt;#!/bin/bash -e&lt;/span&gt;

&lt;span class="c"&gt;# This should be set in the environment variables of the Elastic Beanstalk environment. e.g. 3.8.5&lt;/span&gt;
&lt;span class="c"&gt;# You can find the available versions of python on pyenv by running the following command:&lt;/span&gt;
&lt;span class="c"&gt;# - pyenv install --list&lt;/span&gt;
&lt;span class="nv"&gt;PYTHON_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/opt/elasticbeanstalk/bin/get-config environment &lt;span class="nt"&gt;-k&lt;/span&gt; PYTHON_VERSION&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# This should be set in the environment variables of the Elastic Beanstalk environment by default&lt;/span&gt;
&lt;span class="c"&gt;# Default value: /var/app/venv/staging-LQM1lest/bin&lt;/span&gt;
&lt;span class="nv"&gt;PYTHONPATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/opt/elasticbeanstalk/bin/get-config environment &lt;span class="nt"&gt;-k&lt;/span&gt; PYTHONPATH&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Check if the PYTHON_VERSION environment variable is set&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"PYTHON_VERSION is not set. Please set the PYTHON_VERSION environment variable."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Check if the PYTHONPATH environment variable is set&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"PYTHONPATH is not set. Please set the PYTHONPATH environment variable."&lt;/span&gt;
  &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Remove the /bin suffix from the PYTHONPATH environment variable using sed&lt;/span&gt;
&lt;span class="nv"&gt;PYTHONPATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt; | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/\/bin$//'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Check if the desired version of python is already installed&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-x&lt;/span&gt; /usr/bin/.pyenv/versions/&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;/bin/python3 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Python version &lt;/span&gt;&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;&lt;span class="s2"&gt; is already installed in pyenv"&lt;/span&gt;

  &lt;span class="c"&gt;# Check if the virtual environment exists&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Virtual environment does not exist. Creating a new virtual environment with the correct version of python"&lt;/span&gt;
    /usr/bin/.pyenv/versions/&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;/bin/python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;0
  &lt;span class="k"&gt;fi&lt;/span&gt;

  &lt;span class="c"&gt;# Get the version of python in the virtual environment&lt;/span&gt;
  &lt;span class="nv"&gt;PYTHON_VERSION_VENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;/bin/python3 &lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

  &lt;span class="c"&gt;# Check if the version of python in the virtual environment is the same as the desired version&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PYTHON_VERSION_VENV&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"Python &lt;/span&gt;&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Python version &lt;/span&gt;&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;&lt;span class="s2"&gt; is already installed in the virtual environment"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;0
  &lt;span class="k"&gt;fi&lt;/span&gt;

  &lt;span class="c"&gt;# Remove the old virtual environment&lt;/span&gt;
  &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;

  &lt;span class="c"&gt;# Create a new python virtual environment with the correct version of python&lt;/span&gt;
  /usr/bin/.pyenv/versions/&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;/bin/python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;
  &lt;span class="nb"&gt;exit &lt;/span&gt;0
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Install the following dependencies, which are necessary to build the versions of python via pyenv:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum groupinstall &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="s2"&gt;"Development Tools"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; openssl11 openssl11-libs readline-devel &lt;span class="se"&gt;\&lt;/span&gt;
  zlib-devel bzip2 bzip2-devel sqlite sqlite-devel &lt;span class="se"&gt;\&lt;/span&gt;
  libffi-devel xz-devel openssl11-devel

&lt;span class="c"&gt;# If you run into a '**command not found**' error for --allowerasing,&lt;/span&gt;
&lt;span class="c"&gt;# as an alternative you can use the 'yum swap' command to swap&lt;/span&gt;
&lt;span class="c"&gt;# the installed openssl-devel package for the openssl11-devel package:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum swap openssl-devel openssl11-devel

&lt;span class="c"&gt;# Install pyenv and then add the pyenv directory and binary to your shell environment:&lt;/span&gt;

&lt;span class="c"&gt;# Set the pyenv root to a readable location&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PYENV_ROOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin/.pyenv

&lt;span class="c"&gt;# Download the pyenv installer&lt;/span&gt;
curl &lt;span class="nt"&gt;-sL&lt;/span&gt; https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer &lt;span class="nt"&gt;-O&lt;/span&gt;

&lt;span class="c"&gt;# Check if pyenv is not already installed&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nv"&gt;$PYENV_ROOT&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;bash pyenv-installer
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Setup the pyenv environment variables&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'export PYENV_ROOT="/usr/bin/.pyenv"'&lt;/span&gt; ~/.profile &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PYENV_ROOT="/usr/bin/.pyenv"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'command -v pyenv &amp;gt;/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"'&lt;/span&gt; ~/.profile &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'command -v pyenv &amp;gt;/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(pyenv init -)"'&lt;/span&gt; ~/.profile &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(pyenv init -)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(pyenv virtualenv-init -)"'&lt;/span&gt; ~/.profile &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(pyenv virtualenv-init -)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile

&lt;span class="c"&gt;# Install the desired version of python, for example, 3.8.5:&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PYENV_ROOT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/usr/bin/.pyenv"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PYENV_ROOT&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
pyenv &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;

&lt;span class="c"&gt;# Enable the new version as the global:&lt;/span&gt;
pyenv global &lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;

&lt;span class="c"&gt;# Verify the version of python is indeed the version we specified in the previous command:&lt;/span&gt;
/usr/bin/.pyenv/versions/&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;/bin/python3 &lt;span class="nt"&gt;--version&lt;/span&gt;

&lt;span class="c"&gt;# Remove the old virtual environment&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;

&lt;span class="c"&gt;# Create a new python virtual environment with the correct version of python&lt;/span&gt;
/usr/bin/.pyenv/versions/&lt;span class="nv"&gt;$PYTHON_VERSION&lt;/span&gt;/bin/python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv &lt;span class="nv"&gt;$PYTHONPATH&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;That's it. I hope you found this read helpful, and you can use this ready-to-use solution to upgrade your python runtime versions on elastic beanstalk with no hassles.&lt;/p&gt;

&lt;p&gt;See you in the next article!&lt;/p&gt;

</description>
      <category>elasticbeanstalk</category>
      <category>python</category>
      <category>devops</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
